我正在使用 NSHTTPURLRequest 从远程服务器检索 XML 字符串,然后使用 NSXMLParser 解析 XML。我正在检索两段不同的 XML,并且单独解析其中一段可以正常工作;但是,当我尝试将一个请求附加到另一个请求的末尾时,它会解析第一个请求,但无法识别第二个标记。
我的回调如下。
-(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 并成功完成,我可以在调用 invokeParser 之前使用 NSLog 转储正确的 XML,但解析器永远找不到第二组 XML。XML 的结构如下,其中标签 1、2 和 3 来自第一个请求,标签 4 由第二个请求返回。
<tag 1>
<tag 2>
<tag 3 />
</tag 2>
<tag 2>
<tag 3 />
</tag 2>
<tag 2>
<tag 3 />
</tag 2>
</tag 1>
<tag 4 />
像这样将两者结合在一起,didStartElement
为除标记 4 之外的所有标记调用 NSXMLParser 回调。然而,两组 XML 都可以正常工作。有人知道为什么吗?