XPath 1.0条件:如果b的值为true,则选择a

时间:2018-12-10 09:25:29

标签: xml xpath-1.0

我有这个简单的xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<json encoding="UTF-8" has-bom="false" html-processing-enabled="true" replaceEntities="true" version="1.0">
    <map>
        <element isString="1" text="key">GREETING_ID</element>
        <element isString="1" text="value">hello</element>
        <element isString="1" text="comment">this is a greeting</element>
        <element isString="0" text="maxLength">5</element>
        <element isString="0" text="needsTranslation">true</element>
    </map>
    <map>
        <element isString="1" text="key">FAREWELL_ID</element>
        <element isString="1" text="value">bye</element>
        <element isString="1" text="comment">this is a farewell</element>
        <element isString="0" text="maxLength">10</element>
        <element isString="0" text="needsTranslation">false</element>
    </map>
</json>

我想选择属性为text =“ value”的Element节点,但前提是在同一属性为text =“ needsTranslation”的Map节点中,其文本等于“ true”。我刚刚开始使用XPath的旅程,我对从哪里开始一无所知。

1 个答案:

答案 0 :(得分:0)

您可以尝试类似的操作(我已经用您的XML测试过,它返回hello):

//map[element[@text="needsTranslation" and text()="true"]]/element[@text="value"]

//map[element[@text="needsTranslation" and text()="true"]]选择一个

  

属性为text =“ needsTranslation”的地图节点元素的文本等于“ true”

,然后/element[@text="value"]选择

  

具有属性text =“ value”的元素节点