xpath 根据条件获取第一个元素

xpath get first element based on condition

我需要我的 xpath 表达式 select 仅 xml 文件的第一个子元素基于条件。假设第一个有 field1=B。 我使用这个表达式,但它 return 与 field1=A.

<root>
<entry>
    <field1>A</field1>
    <field2>10</field2>
</entry>
<entry>
    <field1>B</field1>
    <field2>20</field2>
</entry>
/root/entry[//field1='B' or 'C'][1]

我该怎么做?

应该是

/root/entry[.//field1='B' or .//field1='C'][1]

注意 entry[//field1='B'][1] 表示 return 第一个 entry 节点如果 field1 节点值为 'B' 存在(XML)entry[.//field1='B'][1] 表示 return 第一个 entry 节点,如果它有一个值为 [=15= 的后代 field1 节点]

也可以将表达式简化为

/root/entry[field1='B' or field1='C'][1]

if field1 总是显示为 entry

的直接子代