使用NSXMLParser一次解析多个NSMutableURLRequests

时间:2013-06-13 15:22:13

标签: objective-c nsxmlparser nsmutableurlrequest

我正在使用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都可以正常工作。有谁知道这是为什么?

0 个答案:

没有答案