我是XJC的新手。我尝试使用WSDL并使用XJC命令生成绑定类,我收到以下错误:
C:\jaxb>xjc -verbose -b c:\jaxb\bindings-wsdl.xjb -wsdl c:\jaxb\BioMetScrnSvc.wsdl
parsing a schema...
[ERROR] XPath evaluation of "//*[local-name()='schema']" results in empty target node
line 8 of file:/C:/jaxb/bindings-wsdl.xjb
Failed to parse a schema.
我的绑定文件如下:
<jaxb:bindings version="2.1"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:impl="http://www.openuri.org/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:intf="http://www.openuri.org/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<jaxb:bindings node="//*[local-name()='schema']">
<jaxb:globalBindings generateElementProperty="false"/>
</jaxb:bindings>
</jaxb:bindings>
提供给我的WSDL如下:
<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions targetNamespace="http://www.openuri.org/"
xmlns:impl="http://www.openuri.org/"
xmlns:apachesoap="http://xml.apache.org/xml-soap"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:intf="http://www.openuri.org/">
<wsdl:types>
<schema elementFormDefault="qualified" targetNamespace="http://www.openuri.org/"
xmlns="http://www.w3.org/2001/XMLSchema">
...
根据我从本网站阅读的所有建议,我已将必要的命名空间包含在绑定文件中无济于事。我测试了Xpath并且它是正确的。
如果我没有绑定文件,则会生成JAXBElement而不是String。理解这是因为minOccurs和nillable一起发生。
此致 韦斯
答案 0 :(得分:1)
我无法使绑定与node
一起使用。这可能是XJC中的一个错误,我会检查/报告给Oracle。
但是SCD绑定确实有效!所以这是一个适合您的解决方案。创建一个文件&#34; wsdl.xjb&#34;并将以下代码放入其中。并将它放在同一个文件夹上(为简单起见,或者你可以放在任何地方,然后你需要提及它的路径)你有example.wsdl文件。
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0">
<jaxb:bindings scd="x-schema::tns" xmlns:tns="http://www.openuri.org/">
<jaxb:globalBindings generateElementProperty="false"/>
</jaxb:bindings>
</jaxb:bindings>
您需要包含-extension
命令开关,您的最终命令将如下所示:
xjc -extension -verbose -wsdl example.wsdl -b wsdl.xjb