使用 XPATH 获取节点位置以从同一棵树中检索另一个值

Using XPATH to get the node location to retrieve another value from the same tree

我有一个 xml 文件需要处理(将其添加到 post 的末尾)。 只有当我找到节点“DocumentTypeValue”= 1319 时,我才需要检索节点“DocIDAu​​toNumerator”。 有没有办法在一个 XPATH 中查看它? 或者我应该寻找 DocumentTypeValue ==1319 并获取当前位置,以便我可以使用刚刚检索到的位置创建 XPATH? 谢谢大家的帮助!

文件是-

    <Document>
       <Labels>
          <Label>
             <Fields>
                <Field>
                   <Code>DocumentTypeValue</Code>
                   <Value>4008</Value>
                </Field>
                <Field>
                   <Code>DocIDAutoNumerator</Code>
                   <Value>123121</Value>
                </Field>
             </Fields>
          </Label>
       </Labels>
      <ActivityTime>2021-08-11 </ActivityTime>
    </Document>

    <Document>
       <Labels>
          <Label>
             <Fields>
                <Field>
                   <Code>DocumentTypeValue</Code>
                   <Value>1319</Value>
                </Field>
                <Field>
                   <Code>DocIDAutoNumerator</Code>
                   <Value>21321</Value>
                </Field>
             </Fields>
          </Label>
       </Labels>
    </Document>

要获取包含 <Code> 元素且值为“DocIDAu​​toNumerator”且具有 Field/Code 值为“1319”的同级元素的 <Field> 节点,您可以使用以下 XPath- 1.0 表达式:

//Field[Code='DocIDAutoNumerator' and ../Field[Value='1319']]

此 returns 具有所需属性的 <Field> 元素。
要获取其 Value,请将字符串 /Value 附加到表达式。
要检索其 Code 元素,请附加字符串 /Code.

这应该有效:

//Document[.//Code/text() = "DocumentTypeValue"/following-sibling::Value/text() = "1319"]////Code/text() = "DocIDAutoNumerator"/following-sibling::Value/text()

这个 XPath,

//Fields[Field[Code="DocumentTypeValue"][Value="1319"]]
 /Field[Code="DocIDAutoNumerator"]/Value

选择 FieldValue 元素,其中

  • 有一个 "DocIDAutoNumerator" Code,并且
  • Field 在同一个 Fields 元素中
    • 有一个 "DocumentTypeValue" Code 并且有一个 "1319" Value.