NSXML解析器,程序流程在哪里?

时间:2013-09-03 17:12:48

标签: nsxmlparser

我使用NSXML解析器来解析从Web服务收到的SOAP响应XML。 在我的root方法中,

 NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self]; 

我使用此代码发送我的SOAP请求,其中theRequest变量具有我的SOAP请求。 所以收到数据后,

 -(void)connectionDidFinishLoading:(NSURLConnection *)connection{
     //codes to recieve webData
    xmlParser = [[NSXMLParser alloc] initWithData: _webData];
[_xmlParser setDelegate: self];
[_xmlParser setShouldResolveExternalEntities: YES];
[_xmlParser parse];

 }

现在,程序流向didStartElement,didFinishDocument方法。我的root方法需要返回解析xml后得到的结果,但是当我使用断点检查程序流时,解析方法不会在我的代码中调用return语句之前结束,因此我无法返回解析后的值。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

NSXMLParser完全同步。当[_xmlParser parse]返回时,所有解析都已完成(或因错误而中止)。

答案 1 :(得分:0)

根据你的描述,问题不是很清楚。似乎问题是,在构造了根元素之后 - 你继续处理你的程序,同时仍然在NSXMLParser的解析方法中。

要解决此问题,只需在主线程上调用一个选择器,将选择器的委托结果(根元素)传递给最终处理它的方法。或者,使用dispatch_async到主线程,在那里调用处理根元素的方法。