我正在使用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
的NSXMLParser回调调用所有标记,除了标记4.然而,这两组XML都可以正常工作。有谁知道这是为什么?