我正在尝试解析这个提要:带有TBXMLParser的http://missing.amberalertnederland.nl/nl/index.rss。为此,我使用以下代码:
- (void)loadRecords:(NSString *)records {
NSString *someXML = @"http://missing.amberalertnederland.nl/nl/index.rss";
TBXML *tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:someXML]] retain];
records = [NSMutableArray array];
[records retain];
if (tbxml.rootXMLElement)
[self traverseElement:tbxml.rootXMLElement];
[tbxml release];
}
- (void) traverseElement:(TBXMLElement *)element {
do {
if (element->firstChild)
[self traverseElement:element->firstChild];
if ([[TBXML elementName:element] isEqualToString:@"item"]) {
TBXMLElement *title = [TBXML childElementNamed:@"title" parentElement:element];
TBXMLElement *link = [TBXML childElementNamed:@"link" parentElement:element];
TBXMLElement *description = [TBXML childElementNamed:@"description" parentElement:element];
[records addObject:[NSArray arrayWithObjects:
[TBXML textForElement:title],
[TBXML textForElement:link],
[TBXML textForElement:description],nil]];
}
} while ((element = element->nextSibling));
NSLog(@"%@", records);
}但是,记录数组只返回(null)值。
任何关于如何使用TBXML的指南(我认为我做的是对的)也将是受欢迎的。
发布于 2011-11-07 18:33:22
我从来没有用过TBXML,我用的是SMXMLDocument
下面是我用来解析RSS的方法:
- (NSArray *) arrayNewsItemsFromDocument:(SMXMLDocument *)document {
SMXMLElement *channel = [document.root childNamed:@"channel"];
NSArray *itemArray = [channel childrenNamed:@"item"];
NSMutableArray *mutableArray = [[NSMutableArray alloc] initWithCapacity:[itemArray count]];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
//Mon, 11 Jul 2011 00:00:00 +0200
[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"EN"] autorelease]];
[dateFormatter setDateFormat:@"EEE, d MMM yyyy HH:mm:ss ZZZZ"];
for (SMXMLElement *item in itemArray) {
News *news = [[News alloc] init];
news.title = [item childNamed:@"title"].value;
NSString *text = [item childNamed:@"encoded"].value;
news.text = [self stringFromHTMLString:text];
news.articleUrl = [item childNamed:@"link"].value;
NSString *dateString = [item childNamed:@"pubDate"].value;
NSDate *date = [dateFormatter dateFromString:dateString];
news.date = date;
[mutableArray addObject:news];
[news release], news = nil;
}
[dateFormatter release], dateFormatter = nil;
NSArray *newsArray = [[mutableArray copy] autorelease];
[mutableArray release], mutableArray = nil;
return newsArray;
}https://stackoverflow.com/questions/8035151
复制相似问题