我正在制作一个应用程序,该应用程序通过使用“登录”并返回 xml“字符串”的 web 服务调用来搜索数据库。
此调用的 wdsl 如下:
<s:element name="PerformGlobalSearch">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="searchString" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="username" type="s:string"/>
<s:element minOccurs="0" maxOccurs="1" name="password" type="s:string"/>
<s:element minOccurs="1" maxOccurs="1" name="errorCode" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="errorDescription" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="PerformGlobalSearchResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="PerformGlobalSearchResult">
<s:complexType mixed="true">
<s:sequence>
<s:any/>
</s:sequence>
</s:complexType>
</s:element>
<s:element minOccurs="1" maxOccurs="1" name="errorCode" type="s:int"/>
<s:element minOccurs="0" maxOccurs="1" name="errorDescription" type="s:string"/>
</s:sequence>
</s:complexType>
我已经使用 wsdl2objc 生成了代码,它似乎工作正常。我只需要知道如何访问返回的 xml。
如果我NSLog
是“webserviceSvc.m”类中的响应数据,它会打印 xml。但是,它随后返回由 wsdl2objc“PerformeGlobalSearchResponse”生成的对象。我设法在代码中收到了这个,但我似乎无法访问它应该包含的 xml。
-(void) processResponse : (WebServiceSoapBindingResponse *)soapResponse {
NSArray *responseBodyParts = soapResponse.bodyParts;
id bodyPart;
@try{
bodyPart = [responseBodyParts objectAtIndex:0];
}
...
else if([bodyPart isKindOfClass:[xxxWebServiceSvc_PerformeGlobalSearchResponse class]]) {
xxxWebServiceSvc_PerformGlobalSearchResponse* SearchResponse = bodyPart;
NSLog(@"Test: %@", SearchResponse.PerformeGlobalSearchResult);
}
我尝试了很多不同的方法。我需要访问 xml 并且需要解析它。解析我想我在尝试不同的解决方案时已经成功了。
但是我如何访问 xml?如何将 PerformGlobalSearchResult 转换为 xml 文档?