首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TBXML解析,找不到nextSibling

TBXML解析,找不到nextSibling
EN

Stack Overflow用户
提问于 2013-01-19 08:57:58
回答 1查看 268关注 0票数 0

我必须从web解析这个XML:

代码语言:javascript
复制
<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>

我需要字段,data / titolo / testo / sezione,每个

这是我的密码:

代码语言:javascript
复制
    ..............

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

但是,通过这种方式,我只能解析第一个带有,也就是带有id=0的。看来我找不到下一个兄弟了。我的错误在哪里?!?

EN

回答 1

Stack Overflow用户

发布于 2013-01-21 14:07:02

...and,这就是答案!:

代码语言:javascript
复制
- (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));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14412719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档