2012-02-28 415 views
1

我已经运行了一个WS,它返回一个包含原始XML的SoapPrimitive作为字符串。正如你在这个例子中响应看到,ResultXML元素的内容是一个字符串,它本身就是某种逃脱XML的Webservice返回包含转义XML的SoapPrimitive

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetJourneyPathResponse xmlns="http://www.etis.fskab.se/v1.0/ETISws"><GetJourneyPathResult><Code>0</Code><Message /><ResultXML>&lt;Part&gt;&lt;From&gt;&lt;Id&gt;254197... 

通常我会做这样的事情

SoapObject soapObject = (SoapObject) response.getProperty("EndPoints"); 

但在这种情况下,它不工作(classcastexception)。这是因为(我认为)KSOAP将结果视为字符串原语而不是复杂对象。所以我做

SoapPrimitive Partsp = (SoapPrimitive) response.getProperty("ResultXML"); 

这个工作,我现在可以访问字符串中的XML。但接下来呢?

我宁愿将XML字符串转换为SoapObject,以便我可以继续我的快乐方式。那可能吗?

这个SOAP响应似乎对我来说太麻烦了,但对此我没有太多的办法。

彼得

回答

0

你是如何得到你的回应?您是否尝试过调试以查看响应的样子。这绝对是奇怪的,而不是它应该如何。

+0

这个ws是大约5个家庭中的一个。其他3个我使用return SoapObjects,一切都很好。调用这个WS时,我不做任何不同的事情。这是不同的答复内容。 – Rhubarb65 2012-02-29 07:31:53

+0

在第二个想法中,试图将XML字符串转换为SoapObject可能是一个糟糕的主意。 XML包含很多构成路线的坐标。我可能只是想解析字符串。在Java中我没有这方面的经验,但从我读过的XMLPullParser可能是最简单和最快的 – Rhubarb65 2012-02-29 07:34:51

+0

它调用getResponse时它自动地是一个SoapObject树,而您只需要解析它。如果你使用XMLPullParser,你可能不想使用kso​​ap,否则你会这样做两次。 – 2012-02-29 19:15:35