解碼SOAP Envelope時遇到問題。 這裏是我的XMLXMLStreamReader和UnMarshalling SOAP消息
<?xml version="1.0"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:tns="http://c.com/partner/">
<env:Header>c
<tns:MessageId env:mustUnderstand="true">3</tns:MessageId>
</env:Header>
<env:Body>
<GetForkliftPositionResponse xmlns="http://www.c.com">
<ForkliftId>PC006</ForkliftId>
</GetForkliftPositionResponse>
</env:Body>
</env:Envelope>
我用下面的代碼對身體進行解碼,但它總是返回命名空間TNS:郵件ID,不以ENV:身體。我也想將XMLStreamReader轉換爲字符串以進行調試問題,這可能嗎?
XMLInputFactory xif = XMLInputFactory.newFactory();
xif.setProperty("javax.xml.stream.isCoalescing", true); // decode entities into one string
StringReader reader = new StringReader(Message);
String SoapBody = "";
XMLStreamReader xsr = xif.createXMLStreamReader(reader);
xsr.nextTag(); // Advance to header tag
xsr.nextTag(); // advance to envelope
xsr.nextTag(); // advance to body
我得到的例外 [com.sun.istack。 internal.SAXParseException2; lineNumber:6; columnNumber:3;意外元素(uri:「http://www.w3.org/2003/05/soap-envelope」,local:「Body」)。 我想讀取什麼是「後」的身體,以便我可以解開它 – 2013-04-04 14:40:29
@AhmedSaleh一旦你找到了開放的'身體'標記_then_你可以使用'xsr.nextTag()'一次,以便前進身體內元素的開始標記,並從那裏開始解組。 – 2013-04-04 14:42:04