在Android中解析复杂的WCF响应

时间:2010-11-10 14:42:54

标签: java android wcf ksoap2

我需要在Android下通过SOAP使用WCF Web服务。我是通过使用KSOAP2.5.2来做到这一点的。 现在由于我们不允许以任何方式编辑WCF,我目前无法更改WCF服务返回的输出。这是我的主要问题。要解决这个问题,我需要从WCF(解决方法)中获取:

anyType{schema=anyType{element=anyType{complexType=anyType{choice=anyType{element=anyType{complexType=anyType{sequence=anyType{element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{}; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; element=anyType{}; element=anyType{}; element=anyType{}; element=anyType{simpleType=anyType{restriction=anyType{maxLength=anyType{}; }; }; }; }; }; }; }; }; }; }; diffgram=anyType{DocumentElement=anyType{CL_9_2_4_DestInfo=anyType{DESTINATION=.... LOTs of other data.

现在,因为它似乎是一些微软的代码,它实际上是一个完整的数据集/ xsd(?)我如何将这个东西解析成一个工作数据集,或者至少让它对我的小Android有些可读?

2 个答案:

答案 0 :(得分:1)

经过一些进一步的调查后,我了解到KSOAP已经削减了返回XML,但由于它是一个Microsoft .NET数据集(在KSOAP中没有处理),它返回了一个奇怪的字符串。 检查HttpTransportSE.responseDump()时,我可以获得正常的XML响应。但是,要将响应映射/解析为Java对象,您必须遵循本指南,该指南提供了多种方法: Working with XML in Androind

答案 1 :(得分:0)

Michaels文章的链接是关于一般的xml解析。如果你已经运行了KSOAP,你可以只做一个getResponse,这将为你提供嵌套的SoapObjects,你可以在代码中解析设置你的Pojos或者任何来自getProperty和getAttribute的调用,然后根据你的需要进行迭代。