使用 XPATH 获取节点位置以从同一棵树中检索另一个值
Using XPATH to get the node location to retrieve another value from the same tree
我有一个 xml 文件需要处理(将其添加到 post 的末尾)。
只有当我找到节点“DocumentTypeValue”= 1319 时,我才需要检索节点“DocIDAutoNumerator”。
有没有办法在一个 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>
元素且值为“DocIDAutoNumerator”且具有 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
选择 Field
的 Value
元素,其中
- 有一个
"DocIDAutoNumerator"
Code
,并且
- 与
Field
在同一个 Fields
元素中
- 有一个
"DocumentTypeValue"
Code
并且有一个 "1319"
Value
.
我有一个 xml 文件需要处理(将其添加到 post 的末尾)。 只有当我找到节点“DocumentTypeValue”= 1319 时,我才需要检索节点“DocIDAutoNumerator”。 有没有办法在一个 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>
元素且值为“DocIDAutoNumerator”且具有 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
选择 Field
的 Value
元素,其中
- 有一个
"DocIDAutoNumerator"
Code
,并且 - 与
Field
在同一个Fields
元素中- 有一个
"DocumentTypeValue"
Code
并且有一个"1319"
Value
.
- 有一个