Я использую RSS-ридер и отлично работает, когда я нажимаю UITableViewCell
для загрузки <link>
либо в UIWebView
, либо для открытия Safari по этой ссылке.Как обрабатывать HTML-строки в Cocoa Touch
Но я действительно хочу, чтобы узнать, как загрузить содержимое темы в приложение вместо показывая весь сайт или прыжок в Safari
В RSS корме на каждый <item>
существует <body>
тега (и <Description>
, который содержит то же самое, но кодированный), который содержит тематическое содержание, как на картинке ниже показывает:
alt text http://www.balexandre.com/temp/2010-04-13_0953.png
Таким образом, вместо того, чтобы поймать <link>
я назначая <body>
. Проблема заключается в том, что он не работает правильно :-(
для этого примера я только получить содержимое до первого <br>
больше ничего.
- Я использую
NSString
, как я хотел бы использовать в C#, должны Я использую любой другой объект, есть лучший объект для использования на таких данных? - должен ли я использовать
UITextView
, чтобы загрузить эту информацию (как это имеет свиток уже), или я должен использоватьUIWebView
вместо?
Th ank you.
добавил
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
//NSLog(@"found this element: %@", elementName);
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
// clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentDate = [[NSMutableString alloc] init];
currentSummary = [[NSMutableString alloc] init];
currentLink = [[NSMutableString alloc] init];
currentBody = [NSMutableString new]; // added by me
currentCreator = [NSMutableString new]; // added by me
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
//NSLog(@"ended element: %@", elementName);
if ([elementName isEqualToString:@"item"]) {
// save values to an item, then store that item into the array...
[item setObject:currentTitle forKey:@"title"];
[item setObject:currentLink forKey:@"link"];
[item setObject:currentSummary forKey:@"summary"];
[item setObject:currentDate forKey:@"date"];
[item setObject:currentBody forKey:@"body"]; // <----
[item setObject:currentCreator forKey:@"dc:creator"];
[stories addObject:[item copy]];
NSLog(@"adding story: %@", currentTitle);
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog(@"found characters: %@", string);
// save the characters for the current item...
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"link"]) {
[currentLink appendString:string];
} else if ([currentElement isEqualToString:@"summary"]) {
[currentSummary appendString:string];
} else if ([currentElement isEqualToString:@"pubDate"]) {
[currentDate appendString:string];
} else if ([currentElement isEqualToString:@"body"]) {
[currentBody appendString:string]; // <----
} else if ([currentElement isEqualToString:@"dc:creator"]) {
[currentCreator appendString:string];
}
}
и перейти к моей WebBrowser Вид у меня есть:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic
int storyIndex = [indexPath indexAtPosition: [indexPath length] - 1];
NSString * storyContent = [[stories objectAtIndex: storyIndex] objectForKey: @"body"];
// load web view
[self showWebPage:storyContent]; // <-- Here (storyContent variable) I only have the content until the first <br> :-(
}
Я использую NSXMLParser уже получить УПС, это только для ''
тега – balexandreAre вы используете NSMutableString для построения строки внутри тега '
'? Если память используется, она должна продолжаться до закрытия тега (если только он не встречает тег, внутри которого вы разбираетесь в другом месте). – mgriepentrogдобавил мой код ... Я использую NSMutableString: - / – balexandre