【问题标题】:WSDL generated Jaxb Add namespace prefix to only root elementWSDL 生成的 Jaxb 仅将命名空间前缀添加到根元素
【发布时间】:2020-12-15 12:59:33
【问题描述】:

我正在使用 jaxb2 插件创建一个肥皂网络服务。因此,我从 wsdl 文件生成了 jaxb 类。我在这里输入了生成代码的示例。


    //ObjectFactory.java
        @XmlElementDecl(namespace = "http://xxxxx/", name = "InquiryResponse")
        public JAXBElement<InquiryResponse> createInquiryResponse(InquiryResponse value) {
            return new JAXBElement<InquiryResponse>(_InquiryResponse_QNAME, InquiryResponse.class, null, value);
        }
    
    //package-info.java
    @javax.xml.bind.annotation.XmlSchema(namespace = "http://XXXX/",
    elementFormDefault = javax.xml.bind.annotation.XmlNsForm.UNQUALIFIED, 
    xmlns = {   
            @XmlNs(namespaceURI = "http://XXXX/", prefix = "ws")  
        })
    package X.X.X;
    
    import javax.xml.bind.annotation.XmlNs;

反应是


    <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP-ENV:Header/>
       <SOAP-ENV:Body>
          <InquiryResponse xmlns:ws="http://XXXX/">
             <InquiryResponse>
                <refId>0004440</refId>
                <status>UP</status>
             </InquiryResponse>
          </InquiryResponse>
       </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

但我想要的是

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <ws:InquiryResponse xmlns:ws="http://XXXX/">
         <InquiryResponse>
            <refId>0004440</refId>
            <status>UP</status>
         </InquiryResponse>
      </InquiryResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
I am using a spring boot. Please help me. Thanks.

【问题讨论】:

    标签: spring soap wsdl jaxb2-maven-plugin


    【解决方案1】:

    我相信这是因为您在 package-info.java 中将 elementFormDefault 指定为 UNQUALIFIED。尝试将其切换到 QUALIFIED 看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-03
      • 2018-07-25
      • 1970-01-01
      • 1970-01-01
      • 2011-10-17
      • 2017-11-27
      相关资源
      最近更新 更多