簡體   English   中英

使用JAXB編組時如何包含肥皂信封標簽?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM