我有下面的XML與SOAP信封作爲Java String
:如何使用JDOM刪除soap信封並將其餘的XML作爲字符串返回?
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<MyStartElement xmlns="http://www.example.com/service">
...
我希望能夠使用hamcrest並在其上的XML的匹配器擴展https://code.google.com/p/xml-matchers以後,但首先我想擺脫的肥皂信封。
我如何刪除使用JDOM 2.0.5 SOAP信封和獲得剩餘的XML(即與MyStartElement
爲根開始)回爲一個String
?
我試過如下:
SAXBuilder builder = new SAXBuilder();
Document document = (Document) builder.build(toInputStream(THE_XML));
Namespace ns = Namespace
.getNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
Namespace ns2 = Namespace
.getNamespace("http://www.example.com/service");
Element response = document.getRootElement()
.getChild("Body", ns)
.getChild("MyStartElement", ns2);
System.out.println(new XMLOutputter().outputString(new Document(response)));
這將返回:異常線程 「main」 org.jdom2.IllegalAddException:內容已經有現有父 「肥皂:身體」
我有一個類似的設置,我打電話
System.out.println(new XMLOutputter().outputString(new Document(response)));
但返回整個XML包括肥皂信封。
我需要做些什麼才能從我的XML中使用JDOM剝離肥皂信封並獲得String
?
獎金的問題:
- 是否有一個很好的介紹/教程JDOM 2? (該網站似乎只有JavaDocs,這使得它開始有點困難...)
- 我意識到使用JDOM可能在這一個頂端。有關如何以更簡單的方式做到這一點的任何建議?