如何在Android中解析复杂的SOAP响应

时间:2010-11-12 07:51:36

标签: android wcf soap sax

两天后,我试图使用WCF(.NET)肥皂服务并序列化它的响应但没有成功。我得到了正确的响应(我不得不把它放在pastebin上:SOAP Response Example),但KSOAP2无法正确处理.NET数据集。 我已经就这个特定问题咨询了各种文章,但没有一个可以处理.NET数据集。给出指导的主要文章是 article by IBM "Working with XML on Android"

我尝试按照以下步骤解析数据但未成功:

  1. 用SAX解析(android) - >由于命名空间不同,似乎不能使用这个复杂的文档。
  2. with DOM Object(android) - > NullPointerExeption(dooh!)
  3. with Digester(dom4j) - > NullPointerException(arggh!)
  4. helloandroid.com建议的方法“使用kso​​ap2 for android,并解析输出数据”
  5. 一些问题: - 返回的响应是普通的XML,但实际上它包含.NET数据集。有没有人成功地从这样的回复中解析数据? - 有没有办法让KSOAP2不要试图解析数据?它返回一个垃圾SoapObject,这是不可读的。我想只是SOAP正文的内容。有没有办法拦截那个? - 你还有其他提示吗?

4 个答案:

答案 0 :(得分:2)

使用kso​​ap2,您可以将信封调试设置为true,然后获取响应转储,其中包含完整的xml。

然而,是什么让你认为返回的SoapObject是不可读的。在调试器中查看它,你会发现一切都在那里你可以使用getProperty(“propname”)和getAttribute(“attribute”)解析它,如果嵌套它们又是SoapObjects,或者包含实际值它们是叶节点。

查看维基上的一些链接到http://code.google.com/p/ksoap2-android/

答案 1 :(得分:1)

到目前为止,我使用DOM和SAX来解析XML文档。 DOM在Android上有一些问题,我不得不处理API中的一些错误。 SAX似乎更好(如果您只阅读,则更精简)。我没有使用kso​​ap,但做了一切手工制作。虽然我不确定.NET的问题在哪里,但我不会发现使用SAX或DOM的问题。您能否评论为什么您认为SAX因命名空间而无法工作? 甲

答案 2 :(得分:1)

我的一个解决方案是:http://vtd-xml.sourceforge.net/

我希望有人能找到更合适的东西。

答案 3 :(得分:0)

我有同样的问题。首先我使用了vtd-xml。它没有问题,但有点慢。现在我切换到标准的Java SAX(不是Android SAX实现),它运行正常。