【问题标题】:TBXML parsing, unable to find nextSiblingTBXML 解析,找不到 nextSibling
【发布时间】:2013-01-02 23:27:55
【问题描述】:

我必须从网络上解析这个 XML:

<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>

我需要来自每个 condizioni

的字段,data / titolo / testo / sezione

这是我的代码:

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

    //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));
    }

但是这样我只能解析第一个condizioni,即id=0的那个。看来我找不到下一个兄弟姐妹了。 我的错在哪里?!?

【问题讨论】:

    标签: iphone xcode xml-parsing tbxml


    【解决方案1】:

    ...这就是答案!:

    - (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));
    

    【讨论】:

      猜你喜欢
      • 2013-03-29
      • 2013-07-08
      • 1970-01-01
      • 2013-09-17
      • 2012-06-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      • 2012-10-28
      相关资源
      最近更新 更多