Xpath 获取错误“;结果为空目标节点“;在选择多个节点时
我有一个如下所示的WSDLXpath 获取错误“;结果为空目标节点“;在选择多个节点时,xpath,jaxb2,Xpath,Jaxb2,我有一个如下所示的WSDL <wsdl:definitions targetNamespace="http://pk/training/basit/webservice/message/lmsapi/serviceoperations"> <wsdl:types> <xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="htt
<wsdl:definitions targetNamespace="http://pk/training/basit/webservice/message/lmsapi/serviceoperations">
<wsdl:types>
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="http://pk/training/basit/webservice/message/lmsapi/serviceoperations">
<xsd:import namespace="http://trainingplan.types.lmsapi.message.webservice.basit.training.pk"/>
...
<xsd:element name="CreateTrainingPlanRequest">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="TrainingPlans" type="ns0:TrainingPlans"/>
</xsd:sequence>
<xsd:attribute name="customerCode" type="xsd:string" use="required"/>
<xsd:attribute name="key" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="CreateTrainingPlanResponse">
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="0" name="ResponseTrainingPlans" type="ns0:ResponseTrainingPlans"/>
</xsd:sequence>
<xsd:attribute name="transactionResult" type="TransactionResultType" use="required"/>
<xsd:attribute name="transactionResultMessage" type="xsd:string"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="AssignTrainingPlanToLearnerRequest">
...
</xsd:element>
....
</wsdl:definitions>
为什么我得到空节点。我的XPath表达式有什么问题
谢谢
编辑:
--------------------------------
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl" node="/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations']/xsd:element[@name='CreateTrainingPlanRequest' or @name='CreateTrainingPlanResponse' or @name='AssignTrainingPlanToLearnerRequest']">
<jaxb:schemaBindings>
<jaxb:package name="pk.training.basit.webservice.messages.lmsapi.serviceoperations.trainingplan" />
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl" node="/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'](/xsd:element[@name='AddCustomerRequest']) and (/xsd:element[@name='AddCustomerResponse'])">
<jaxb:schemaBindings>
<jaxb:package name="pk.training.basit.webservice.messages.lmsapi.serviceoperations.customer" />
</jaxb:schemaBindings>
</jaxb:bindings>
当你说
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl"
node="/wsdl:definitions/wsdl:types/xsd:schema[
@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'
]/xsd:element[@name='CreateTrainingPlanRequest' and @name='CreateTrainingPlanResponse'
and @name='AssignTrainingPlanToLearnerRequest']">
i、 e.将和
更改为或
更新:
如果您试图选择一个xsd:schema
元素,该元素具有所有三个名称的xsd:element
子元素,下面是您需要的XPath表达式:
node="/wsdl:definitions/wsdl:types/xsd:schema[
@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'
and xsd:element[@name='CreateTrainingPlanRequest'] and
xsd:element[@name='CreateTrainingPlanResponse'] and
xsd:element[@name='AssignTrainingPlanToLearnerRequest']"
嗯,谢谢,我按照你说的做了,我的意思是将
和更改为或,但是现在我得到了错误导致太多(3)个目标节点。也许我错过了一些我为什么要做的事情。实际上,我想选择这三个节点并将它们放在一个包中。等等,我编辑我的帖子以显示完整的jaxb绑定code@Basit,您要选择的是什么?一个xsd:schema
元素?如果您对该问题有进一步的更改,您可能需要问一个新问题。我想选择所有三个元素CreateTrainingPlanRequest
,CreateTrainingPlanResponse
和assignTrainingPlantoLearnErrorRequest
属于我提供的具有targetnamespace的schema元素。我正在从这个WSDL生成java类。所以我想选择这三个元素,从这些元素生成类,然后这些类被放在包pk.training.basit.webservice.messages.lmsapi.serviceoperations.trainingplan
下,谢谢,尝试过了,但是现在得到的错误是无法将布尔值转换为节点列表代码>
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl" node="/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations']/xsd:element[@name='CreateTrainingPlanRequest' or @name='CreateTrainingPlanResponse' or @name='AssignTrainingPlanToLearnerRequest']">
<jaxb:schemaBindings>
<jaxb:package name="pk.training.basit.webservice.messages.lmsapi.serviceoperations.trainingplan" />
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl" node="/wsdl:definitions/wsdl:types/xsd:schema[@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'](/xsd:element[@name='AddCustomerRequest']) and (/xsd:element[@name='AddCustomerResponse'])">
<jaxb:schemaBindings>
<jaxb:package name="pk.training.basit.webservice.messages.lmsapi.serviceoperations.customer" />
</jaxb:schemaBindings>
</jaxb:bindings>
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl"
node="/wsdl:definitions/wsdl:types/xsd:schema[
@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'
]/xsd:element[@name='CreateTrainingPlanRequest' and @name='CreateTrainingPlanResponse'
and @name='AssignTrainingPlanToLearnerRequest']">
<jaxb:bindings schemaLocation="http://localhost:8080/lms/service/lms-api/lmsApi.wsdl"
node="/wsdl:definitions/wsdl:types/xsd:schema[
@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'
]/xsd:element[@name='CreateTrainingPlanRequest' or @name='CreateTrainingPlanResponse'
or @name='AssignTrainingPlanToLearnerRequest']">
node="/wsdl:definitions/wsdl:types/xsd:schema[
@targetNamespace='http://pk/training/basit/webservice/message/lmsapi/serviceoperations'
and xsd:element[@name='CreateTrainingPlanRequest'] and
xsd:element[@name='CreateTrainingPlanResponse'] and
xsd:element[@name='AssignTrainingPlanToLearnerRequest']"