我要从网上解析这个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的那个。看来我无法找到下一个兄弟姐妹。 哪里是我的错???
答案 0 :(得分: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));