2011-11-07 105 views
0

我想解析这个源:http://missing.amberalertnederland.nl/nl/index.rss与TBXMLParser。为此目的,即时通讯使用此代码:TBXML解析器解析一个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); 
} 

但是,记录数组只返回(空)值。

任何有关如何使用TBXML(我认为我做得对)的指南也将受到欢迎。我从来没有使用TBXML

+0

只考虑修改现有的问题。编辑完成后,它会再次出现在首页。 –

回答

1

,我使用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; 
} 
+0

SMXMLDocument只是使用NSXMLParser,我想使用TBXMLParser。 – MaikelS