TBXML解析,无法找到nextSibling

问题描述:

我已经解析从网络这个XML:TBXML解析,无法找到nextSibling

<trasporto> 
<condizioni id="0"> 
    <data> </data> 
    <titolo> </titolo> 
    <testo> </testo> 
    <sezione> </sezione> 
</condizioni> 

<condizioni id="1"> 
    <data> </data> 
    <titolo> </titolo> 
    <testo> </testo> 
    <sezione> </sezione> 
</condizioni> 
........ 
........ 
........ 
</trasporto> 

,我需要的字段,数据/ TITOLO /德图/ sezione从每个condizioni

这里是我的代码:

.............. 

    //responseString contains the text fetched from the web 
NSData *data = [responseString dataUsingEncoding:NSUTF8StringEncoding]; 
    tbxml = [[TBXML alloc]initWithXMLData:data]; 

    if (tbxml.rootXMLElement) 
     [self traverseElement:tbxml.rootXMLElement]; 
    [tbxml release]; 
} 

    -(void) traverseElement:(TBXMLElement *)element { 
    NSMutableArray *dataArr = [[NSMutableArray alloc]init]; 
    NSMutableArray *titoloArr = [[NSMutableArray alloc]init]; 
    NSMutableArray *testoArr = [[NSMutableArray alloc]init]; 
    NSMutableArray *sezioneArr = [[NSMutableArray alloc]init]; 

    do { 
     NSLog(@"%@",[TBXML elementName:element]); 
     if (element->firstChild) 
      [self traverseElement:element->firstChild]; 
     if ([[TBXML elementName:element] isEqualToString:@"trasporto"]) { 
      TBXMLElement *condizioni = [TBXML childElementNamed:@"condizioni" parentElement:element]; 
      TBXMLElement *data = [TBXML childElementNamed:@"data" parentElement:condizioni]; 
      TBXMLElement *titolo = [TBXML childElementNamed:@"titolo" parentElement:condizioni]; 
      TBXMLElement *testo = [TBXML childElementNamed:@"testo" parentElement:condizioni]; 
      TBXMLElement *sezione = [TBXML childElementNamed:@"sezione" parentElement:condizioni]; 

      [dataArr addObject:[TBXML textForElement:data]]; 
      [titoloArr addObject:[TBXML textForElement:titolo]]; 
      [testoArr addObject:[TBXML textForElement:testo]]; 
      [sezioneArr addObject:[TBXML textForElement:sezione]]; 

      NSLog(@"data: %@",dataArr);// [TBXML textForElement:data]); 
      NSLog(@"titolo: %@",titoloArr);//[TBXML textForElement:titolo]); 
      NSLog(@"testo: %@",testoArr);//[TBXML textForElement:testo]); 
      NSLog(@"sezione: %@",sezioneArr);//[TBXML textForElement:sezione]); 
      // condizioni = condizioni -> nextSibling; 
     } 
    } while ((element = element->nextSibling)); 
    } 

但这种方式我只能解析第一ç ondizioni,id = 0。看来我无法找到下一个兄弟姐妹。 我的错误在哪里?!?

...这就是答案!:

- (void) traverseElement:(TBXMLElement *)element { 
NSMutableArray *dataArr = [[NSMutableArray alloc]init]; 
NSMutableArray *titoloArr = [[NSMutableArray alloc]init]; 
NSMutableArray *testoArr = [[NSMutableArray alloc]init]; 
NSMutableArray *sezioneArr = [[NSMutableArray alloc]init]; 

TBXMLElement *condizioni = element->firstChild; 
do { 
    TBXMLElement *data = [TBXML childElementNamed:@"data" parentElement:condizioni]; 
    TBXMLElement *titolo = [TBXML childElementNamed:@"titolo" parentElement:condizioni]; 
    TBXMLElement *testo = [TBXML childElementNamed:@"testo" parentElement:condizioni]; 
    TBXMLElement *sezione = [TBXML childElementNamed:@"sezione" parentElement:condizioni]; 

    [dataArr addObject:[TBXML textForElement:data]]; 
    [titoloArr addObject:[TBXML textForElement:titolo]]; 
    [testoArr addObject:[TBXML textForElement:testo]]; 
    [sezioneArr addObject:[TBXML textForElement:sezione]]; 

} while ((condizioni = condizioni->nextSibling));