我想知道是否可以简化以下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;并且还至少有一个代码元素。
答案 0 :(得分:1)
对于您的用例,这可能很简单。但是,它与您所描述的不符。
您在这里选择 map 元素
例如,选择以下 map 元素:
<root>
<map>
<requester type="2"/>
<requester>
<code>a</code>
</requester>
</map>
</root>
如果你想要(1)和(2)中的元素相同,你应该使用(在kjhughes的建议中稍微简化)
//map[requester[@type='2']/code]
在这里,我们选择所有具有请求者元素的地图元素,而该元素又具有值为2的属性 type 和代码元素。