0

この XML を Web から解析する必要があります。

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

そして、各条件からフィールド、データ/タイトル/テスト/セツィオーネが必要です

これが私のコードです:

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

    //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の最初のcondizioniのみを解析できます。次の兄弟が見つからないようです。私の間違いはどこですか?!?

4

1 に答える 1

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));
于 2013-01-21T14:07:02.990 に答える