Xpath 获取错误“;结果为空目标节点“;在选择多个节点时

Xpath 获取错误“;结果为空目标节点“;在选择多个节点时,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

<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']"