java—使用jackson将pojo序列化为具有名称空间和嵌套元素的xml

yqyhoc1h  于 2021-07-09  发布在  Java
关注(0)|答案(0)|浏览(333)

我的目标是使用普通的旧java对象创建一个有效的xml请求字符串。我遇到的问题是,我不能创建多个 Package 元素,也不能正确地分配名称空间。我现在的代码是:

package test_ground;

   import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
   import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
   import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

   import java.util.List;

   @JacksonXmlRootElement(localName = "Envelope", namespace = 
   "http://schemas.xmlsoap.org/soap/envelope/" )
   public class RateReqModel {
    @JacksonXmlProperty(namespace = "http://schemas.xmlsoap.org/soap/envelope/")
    private String Header;

    @JacksonXmlElementWrapper(localName = "GetCurrencyRates", namespace = "http://tempuri.org/")
    private List<String> RateDate;

    public RateReqModel(List<String> RateDate){
        this.RateDate = RateDate;
        }
    }

我从上面的脚本得到了什么:

<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
  <Header/>
  <wstxns1:GetCurrencyRates xmlns:wstxns1="http://tempuri.org/">
    <RateDate xmlns="">2021-03-29</RateDate>
  </wstxns1:GetCurrencyRates>
</Envelope>

我需要的是:

<ns1:Envelope xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://tempuri.org/">
    <ns1:Header/>
    <ns1:Body>
        <ns2:GetCurrencyRates>
            <ns2:RateDate>2021-03-29</ns2:RateDate>
        </ns2:GetCurrencyRates>
    </ns1:Body>
</ns1:Envelope>

如您所见,所需的xml结构有两个名称空间,并且在ratedate元素周围有双 Package ,这正是我所寻求的。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题