首页 > 解决方案 > 如何使用路径表达式从数组中获取属性的值

问题描述

考虑下面的示例 xml。

<Groups>
    <Group id="01" check="true">
        <name>Value</name>
        <age>test</age>
        <setData>
            <data type="module">module</data>
            <data enabled="true">true</data>
        </setData>
    </Group>
    <Group id="02" check="true">
        <name>Value</name>
        <age>test</age>
        <setData>
            <data type="module">module</data>
            <data enabled="true">true</data>
        </setData>
    </Group>
</Groups>

我想使用路径表达式在 setData 中为 GroupId = 1 获取启用的值。下面是我的尝试。这是对问题的临时修复,但会在数组中查找位置。

String groupId = "1"; //to make group id dynamic.
String pathExpression = "Groups/group[@id='"+groupId+"']/setData/data[2]/text()"

而不是这个,我想通过给属性名称“启用”来获取值,这样它就会检查名称而不是位置。

标签: xmlxsltxpath

解决方案


您已经在使用正确的语法来获取group属性值,所以只需对data元素执行类似的操作,除非您不需要检查属性值,只要它存在......

String pathExpression = "Groups/group[@id='"+groupId+"']/setData/data[@enabled]/text()"

推荐阅读