首页 文章

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

提问于
浏览 281
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

    你可以尝试这样的东西(我用你的XML测试它并返回 hello ):

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

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

    具有属性text =“needsTranslation”的Map节点元素具有等于“true”的文本

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

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

相关问题