1

NSHTTPURLRequest を使用してリモート サーバーから XML 文字列を取得し、NSXMLParser を使用して XML を解析しています。取得している 2 つの異なる XML があり、そのうちの 1 つを単独で解析すると問題なく動作します。ただし、あるリクエストを別のリクエストの最後に追加しようとすると、最初のリクエストは解析されますが、2 番目のタグは認識されません。

私のコールバックは次のとおりです。

-(void)connection:(NSURLConnection*)connection didRecieveResponse:(NSURLResponse *)resonse {
    if([[condition that is only true on the first run]])
        _responseData = [[NSMutableData alloc] init];
}

-(void)connection:(NSURLConnection*)connection didRecieveData:(NSData *)data{
    [_repsonseData appendData:data];
}

-(void)connectionDidFinishLoading:(NSURLConnection*)connection {
    if([[condition that is only true on the second run]])
        XMLParser *parser = [self invokeParser:_responseData];
    else
        [self doSecondRequest];
}

-(XMLParser*)invokeParser:(NSData*)data {
    NSXMLParser *nsParser = [[NSXMLParser alloc] init];
    XMLParser *parser = [[XMLParser alloc] init];
    [nsParser setDelegate:parser];
    [nsParser parse];
}

NSMutableURLRequest を連続して 2 回呼び出し、どちらも正常に完了しました。invokeParser を呼び出す直前に NSLog を使用して正しい XML をダンプできますが、パーサーは 2 番目の XML セットを見つけられません。XML の構造は次のとおりです。ここで、タグ 1、2、および 3 は最初の要求からのものであり、タグ 4 は 2 番目の要求によって返されます。

<tag 1>
  <tag 2>
    <tag 3 />
  </tag 2>
  <tag 2>
    <tag 3 />
  </tag 2>
  <tag 2>
    <tag 3 />
  </tag 2>
</tag 1>
<tag 4 />

このように 2 つを一緒に使用するdidStartElementと、タグ 4 を除くすべてのタグに対して NSXMLParser コールバックが呼び出されます。これがなぜなのか誰か知っていますか?

4

0 に答える 0