1

我需要在 Android 下通过 SOAP 使用 WCF 网络服务。我通过使用 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 可读?

4

2 回答 2

1

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

于 2010-11-11T12:07:16.347 回答
0

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

于 2010-11-17T18:08:00.273 回答