Java 如何在存根生成期间重命名WSDL中的复杂类型

Java 如何在存根生成期间重命名WSDL中的复杂类型,java,binding,jaxb,wsdl,wsimport,Java,Binding,Jaxb,Wsdl,Wsimport,我正在使用wsimport 我需要重命名xs:complextype name=Address以防止某些构建冲突 以下是WSDL的一个片段: <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://fedex.com/ws/rate/v13" xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://fedex.com

我正在使用wsimport

我需要重命名xs:complextype name=Address以防止某些构建冲突

以下是WSDL的一个片段:

<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:ns="http://fedex.com/ws/rate/v13" xmlns:s1="http://schemas.xmlsoap.org/wsdl/soap/" targetNamespace="http://fedex.com/ws/rate/v13" name="RateServiceDefinitions">
  <types>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://fedex.com/ws/rate/v13">
      <xs:complexType name="Address">…</xs:complexType>
    ....
   </types>
   ....
</definitions>
我看了下面的帖子,还有一些参考资料


但我不明白为什么这样做不起作用。

休息一下后,我重新审视了一下,终于解决了这个问题

因此,我的最终绑定是:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxws:bindings 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    wsdlLocation="/RateService_v13.wsdl"
    >

    <enableWrapperStyle>true</enableWrapperStyle>
    <enableAsyncMapping>false</enableAsyncMapping>

    <!-- convert all xs:dateTime to java type of Calendar -->
    <jaxws:globalBindings>
        <jxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
    </jaxws:globalBindings>

    <!-- Rename Address to FedExAddress -->
    <jaxws:bindings node="//xs:complexType[@name='Address']">
        <jxb:class name="FedExAddress"/>
    </jaxws:bindings>

</jaxws:bindings>

真的
假的
[wsimport] [ERROR] XPath evaluation of "definitions/types/xs:schema/xs:complexType[@name='Address']/xs:complexType" results in empty target node
 [wsimport]   line 14 of file:/Users/davidboyd/projects/heritage/hybris/bin/custom/cpdeliveryservice/fedex_binding.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxws:bindings 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
    xmlns:jxb="http://java.sun.com/xml/ns/jaxb" jxb:version="2.1"
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    wsdlLocation="/RateService_v13.wsdl"
    >

    <enableWrapperStyle>true</enableWrapperStyle>
    <enableAsyncMapping>false</enableAsyncMapping>

    <!-- convert all xs:dateTime to java type of Calendar -->
    <jaxws:globalBindings>
        <jxb:javaType name="java.util.Calendar" xmlType="xs:dateTime" parseMethod="javax.xml.bind.DatatypeConverter.parseDateTime" printMethod="javax.xml.bind.DatatypeConverter.printDateTime" />
    </jaxws:globalBindings>

    <!-- Rename Address to FedExAddress -->
    <jaxws:bindings node="//xs:complexType[@name='Address']">
        <jxb:class name="FedExAddress"/>
    </jaxws:bindings>

</jaxws:bindings>