我尝试使用wsimport为外部Web服务生成客户端的Java代码。
我创建了一个外部绑定文件,因为有重复的属性名称阻止wsimport工作。我在第4行收到错误xpath错误:null
这是我的绑定文件:
<jxb:bindings version="2.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jxb:bindings wsdlLocation="http://XXXXX.net/WebService/XXXXX.chc?wsdl" node="/xs:schema">
<jxb:bindings node="//xs:element[@name='elementname']">
<jxb:bindings node="//xs:element[@name='Option']">
<jxb:bindings node="//xs:complexType">
<jxb:bindings node=".//xs:attribute[@name='value']">
<jxb:property name="ValueToFixError1" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
我尝试用schemaLocation替换wsdlLocation并获得不同的错误: &#34; http://XXXXX.net/WebService/XXXXX.chc?wsdl&#34;不是这个汇编的一部分。对于&#34; http://XXXXX.net/WebService/XXXXX.chc?wsdl#types?schema1&#34;这是一个错误吗?也在第4行,但将#types?schema1添加到网址只会让我回到原来的错误。
所以我尝试按照建议使用jaxws,但我提出了同样的错误:
<jaxws:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:jaxws="http://java.sun.com/xml/ns/jaxws"
wsdlLocation="http://XXXXX.net/WebService/XXXXX.chc?wsdl">
<jaxws:bindings node="//definitions/types/xs:schema">
<jaxb:bindings node="//xs:element[@name='elementname']">
<jaxb:bindings node="//xs:element[@name='Option']">
<jaxb:bindings node="//xs:complexType">
<jaxb:bindings node=".//xs:attribute[@name='value']">
<jaxb:property name="ValueToFixError1" />
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
</jaxws:bindings>
</jaxws:bindings>
编辑:添加部分wsdl:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cc="urn:cc" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="urn:cc">
<types>
<xs:schema targetNamespace="urn:cc" xmlns:cc="urn:cc" elementFormDefault="qualified" attributeFormDefault="qualified">
答案 0 :(得分:0)
使用apache cxf而不是wsimport解决了我的问题,但在我的初始方法中也存在一些问题。
这里最终有效:
<jxb:bindings version="2.0"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
wsdlLocation="http://XXXXX.net/WebService/XXXXX.chc?wsdl"
node="//xs:schema">
<jxb:bindings node="//xs:element[@name='elementname']//xs:element[@name='Option']//xs:complexType">
<jxb:bindings node=".//xs:attribute[@name='value']">
<jxb:property name="ValueToFixError1" />
</jxb:bindings>
</jxb:bindings>
</jxb:bindings>
节点不应该嵌套,而是在一行上使用//.