1

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

4

0 回答 0