Xpath - 查找特定元素,打印该节点的所有元素

问题描述

给定以下元素的 Xpath

/std:Batch/BatchSection/ContractPartner/Contractor/Contract/contractNumber

如何打印出节点合约的所有子元素 其中sequenceNumber= 12345?

我试过了

xmllint --xpath "string(/std:Batch/BatchSection/ContractPartner/Contractor/Contract/contractNumber[contractNumber='12345'])" test.xml

然而,这是一个无效的 XPath 表达式。如何解决?

示例输入:

<std:Batch xmlns:std="http://www.test.com/contractBatch" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <year>2020</year>
  <batchType>3</batchType>
  <runDate>2020-04-11</runDate>
  <text>Datatest</text>
  <jobInfo>Test</jobInfo>
  <BatchSection>
    <addedAtDate>2020-04-11</addedAtDate>
    <ContractPartner>
      <contractDealerAG>44444</contractDealerAG>
      <contractorType/>
      <isoCountry>NL</isoCountry>
      <language>EN</language>
      <Contractor>
        <contractor>44444</contractor>
        <Contract>
          <contractor>44444</contractor>
          <sequenceNumber>12345</sequenceNumber>
          <info1>abcd</info1>
        </Contract>
      </Contractor>
    </ContractPartner>
  </BatchSection>
</std:Batch>

所需的输出(其中 sequenceNumber=12345):

    <Contract>
      <contractor>44444</contractor>
      <sequenceNumber>12345</sequenceNumber>
      <info1>abcd</info1>
   </Contract>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)