" JAXWS wsimport"在一个" jaxb文件绑定中,XPath是空的"

时间:2015-07-04 15:21:04

标签: java xpath jaxb wsdl wsimport

我正在尝试使用jaxws wsimport生成存根文件。 在WSDL中有两种冲突类型: 第68行:<s:element minOccurs="0" maxOccurs="1" name="DAGSBROTTFELLT" type="s:string" />

和第119行:<s:element minOccurs="0" maxOccurs="1" name="DAGS_BROTTFELLT" type="s:string" />

原因是wsimport不保留下划线字符&#34; _&#34;并认为这两个名字都是一样的。

我创建了一个jaxb绑定文件来明确命名生成的Java类。

但是wsimport说:

[ERROR] XPath error: null
line 11 of file:/C:/Users/deyan/ss_workspace/MVS%20Services/src/is/mvs/services/ws/xjb/companyInfo.xjb

我已经测试了xpath字符串 http://www.freeformatter.com/xpath-tester.html#ad-output 它真正回归了元素。

请帮助弄清楚为什么wsimport说xpath为空。

提前谢谢!

这是我的WSDL: https://gognxml.uh.is/xml_service.asmx?WSDL

这是jaxb绑定文件:

<?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:jaxb="http://java.sun.com/xml/ns/jaxb" jaxb:version="2.1"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  wsdlLocation="https://gognxml.uh.is/xml_service.asmx?WSDL">

  <enableWrapperStyle>true</enableWrapperStyle>
  <enableAsyncMapping>false</enableAsyncMapping>
  <jaxws:bindings          node="wsdl:definitions/wsdl:types/s:schema/s:complexType[@name='Faersla']/s:sequence/s:element[@name='DAGS_BROTTFELLT']">
    <jaxb:class name="Dags_Brottfellt"/>
  </jaxws:bindings>
</jaxws:bindings>

1 个答案:

答案 0 :(得分:0)

我注意到的一件事是XPath表达式使用s命名空间前缀(例如s:schema),但我没有看到在任何地方声明了名称空间前缀。它应该在<jaxws:bindings>个元素之一上声明吗?或者预计会在哪里宣布这样的前缀?通常,在输入XML中声明它们是不够的。但我对wsimport一无所知。

P.S。看起来没有使用xs前缀,所以可能它应该是s。正如您在评论中已经确认的那样。 : - )