2011-11-07 2 views
0

J'essaye d'analyser ce flux: http://missing.amberalertnederland.nl/nl/index.rss avec le TBXMLParser. Pour ce faire, j'utilise ce code:Analyseur TBXML pour analyser un flux 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); 
} 

Cependant, le tableau d'enregistrements ne renvoie que des valeurs (nulles).

Tout guide sur l'utilisation de TBXML (je pensais que je l'ai fait correctement) serait également le bienvenu.

+0

vient de réviser votre Pensez question existante. Une fois édité, il apparaîtra sur la page d'accueil à nouveau. –

Répondre

1

Je ne l'ai jamais utilisé TBXML, j'utiliser SMXMLDocument

Et voici la méthode que je l'utilise pour l'analyse syntaxique 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 utilise simplement NSXMLParser, je veux utiliser TBXMLParser. – MaikelS