简化特定的XPath表达式

时间:2016-02-29 23:05:04

标签: xpath

我想知道是否可以简化以下XPath表达式:

//map[requester/@type='2' and requester/code]

一些测试数据:

<root>
    <map>
        <requester type="2">
            <code>a</code>
            <code>b</code>
        </requester>
    </map>

    ...
</root>

我的目标是只获取至少有一个请求者具有类型属性和值&#39; 2&#39;并且还至少有一个代码元素。

1 个答案:

答案 0 :(得分:1)

对于您的用例,这可能很简单。但是,它与您所描述的不符。

您在这里选择 map 元素

  1. requestter 元素 type 属性等于2
  2. requestter 元素带有代码元素
  3. (1)和(2)中的请求者元素不一定相同
  4. 例如,选择以下 map 元素:

    <root>
        <map>
            <requester type="2"/>
            <requester>
                <code>a</code>
            </requester>
        </map>
    </root>
    

    如果你想要(1)和(2)中的元素相同,你应该使用(在kjhughes的建议中稍微简化)

    //map[requester[@type='2']/code]
    

    在这里,我们选择所有具有请求者元素的地图元素,而该元素又具有值为2的属性 type 代码元素。