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 コールバックが呼び出されます。これがなぜなのか誰か知っていますか?