[英]How to unmarshall SOAP response using JAXB if namespace declaration is on SOAP envelope?
[英]How to include the soap envelope tag when marshalling using JAXB?
我正在使用JAXB整理肥皂請求。 它正在工作,但是生成的XML不包含soap:Envelope
標記。 另外,名稱空間是在根元素上而不是soap:Envelope
標記內指示的。 xml標記上還有一個standalone
屬性。 如何使用JAXB的編組器實現類似於下面第二個XML的輸出?
當前,這是我編組的XML的樣子:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Customer xmlns:ns="http://www.example.org/beanLevelNamespace">
<ns:id>201200001</ns:id>
<ns:name>Name</ns:name>
<ns:age>18</ns:age>
</Customer>
這就是我想要的樣子:
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
<soap:Body xmlns:ns="http://www.example.org/beanLevel1Namespace" xmlns:ns1="http://www.example.org/beanLevel2Namespace">
<ns:Customer>
<ns1:id>201200001</ns:id>
<ns1:name>Name</ns:name>
<ns1:age>18</ns:age>
</ns:Customer>
</soap:Body>
</soap:Envelope>
您可以在發送之前將XML添加到信封中。
"<Envelope><Body>" + your_xml + "</Body></Envelope>
始終將您的名稱空間保持在元素級別; 不在信封級別。 因為當您查看元素是什么類型時,您會變得更加清晰。 保留名稱空間的位置都沒有關系。
編組的XML存在問題。 正確的XML是:
<ns:Customer xmlns:ns="http://www.example.org/beanLevelNamespace">
<ns:id>201200001</ns:id>
<ns:name>Name</ns:name>
<ns:age>18</ns:age>
</ns:Customer>
同樣,將名稱空間聲明放在何處都沒有關系:
<ns:Customer xmlns:ns="http://www.example.org/beanLevelNamespace">
<ns:id>201200001</ns:id>
</ns:Customer>
<Customer xmlns="http://www.example.org/beanLevelNamespace">
<id>201200001</id>
</Customer>
<ns1:Customer xmlns:ns1="http://www.example.org/beanLevelNamespace">
<ns2:id xmlns:ns2="http://www.example.org/beanLevelNamespace">201200001</ns2:id>
</ns1:Customer>
他們都是一樣的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.