首页 > 解决方案 > WSDL 生成的 Jaxb 仅将命名空间前缀添加到根元素

问题描述

我正在使用 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.

标签: springsoapwsdljaxb2-maven-plugin

解决方案


我相信发生这种情况是因为elementFormDefaultUNQUALIFIEDpackage-info.java. 尝试将其切换到QUALIFIED以查看是否有帮助。


推荐阅读