gpt4 book ai didi

XPath 评估结果为空目标节点

转载 作者:行者123 更新时间:2023-12-03 15:32:07 24 4
gpt4 key购买 nike

我正在尝试使用 WSDL 并使用 maven-jaxb2-plugin 生成绑定(bind)类。

WSDL 是这样的,

<wsdl:definitions>
<wsdl:types>
...
</wsdl:types>
...
<wsdl:message name="IServiceWeb_GetPaymentInfo_InputMessage">
<wsdl:part name="parameters" element="tns:GetPaymentInfo"/>
</wsdl:message>
...
<wsdl:portType name="IServiceWeb">
...
<wsdl:operation name="GetPaymentInfo">
<wsdl:input wsaw:Action="*****" message="tns:IServiceWeb_GetPaymentInfo_InputMessage"/>
<wsdl:output wsaw:Action="*****" message="tns:IServiceWeb_GetPaymentInfo_OutputMessage"/>
</wsdl:operation>
</wsdl:portType>

当我最初尝试生成类时,我收到了这个错误,
org.xml.sax.SAXParseException: A class/interface with the same name "org.package.GetPaymentInfoResponse" is already in use. Use a class customization to resolve this conflict.

我添加了一个包含此内容的 binding.xjb 文件,
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" version="2.1">
<bindings
node="wsdl:definitions/wsdl:message[@name='IServiceWeb_GetPaymentInfo_OutputMessage']/wsdl:part[@name='parameters']">
<class name="GetPaymentInfoOutputMessage" />
</bindings>
</bindings>

我得到的错误是,
com.sun.istack.SAXParseException2: XPath evaluation of "wsdl:definitions/wsdl:message[@name='IServiceWeb_GetPaymentInfo_OutputMessage']/wsdl:part[@name='parameters']" results in empty target node

有什么建议可以生成这些文件吗?

编辑
我声明了错误的节点,IServiceWeb_GetPaymentInfo_InputMessage 应该是 IServiceWeb_GetPaymentInfo_InputMessage,更正的绑定(bind)是,
<?xml version="1.0" encoding="UTF-8"?>
<bindings xmlns="http://java.sun.com/xml/ns/jaxb" xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xsi:schemaLocation=" http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" version="2.1">
<bindings
node="wsdl:definitions/wsdl:message[@name='IServiceWeb_GetPaymentInfo_InputMessage']/wsdl:part[@name='parameters']">
<class name="GetPaymentInfoOutputMessage" />
</bindings>
</bindings>

错误信息是,
com.sun.istack.SAXParseException2: XPath evaluation of "wsdl:definitions/wsdl:message[@name='IServiceWeb_GetPaymentInfo_InputMessage']/wsdl:part[@name='parameters']" results in empty target node

最佳答案

已解决

我的绑定(bind)文件缺少提供特定 XSD 的导入值的 schemaLocation 属性,此处显示,以及我的特定架构的正确 XPath 表达式,

<bindings schemaLocation="https://myURI/mySchema.xsd">
<bindings
node="//xs:complexType[@name='GetPaymentInfoResponse']">
<class name="GetPaymentInfoResponseType" />
</bindings>
</bindings>

此外,使用 JDK 1.6,我需要 d/l 并将 jaxb 2.2 jar 添加到我的 jdk 认可的 lib 目录中,如这里所述, http://cxf.apache.org/docs/23-migration-guide.html

使用两种替代方法中的任何一种,{JAVA_HOME}/bin/wsimport.exe 或使用 jaxws-maven-plugin,导致使用此配置解决的“使用类自定义来解决此冲突”错误,
                <configuration>
<args>
<arg>-B-XautoNameResolution</arg>
</args>
</configuration>

但不会与上述认可的 jar 一起运行。

因此,生成了我的类(class),现在可以使用 Web 服务了。 Maven 是生成类文件的好方法。

关于XPath 评估结果为空目标节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211517/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com