XPath能否仅返回具有X子节点的节点?

时间:2020-03-06 14:27:51  来源:igfitidea点击:

是否可以使用XPath仅选择具有特定子元素的节点?例如,从该XML中,我只希望宠物中具有" bar"子元素的元素。因此,所得数据集将包含此示例中的lizardpig元素:

<pets>
  <cat>
    <foo>don't care about this</foo>
  </cat>
  <dog>
   <foo>not this one either</foo>
  </dog>
  <lizard>
   <bar>lizard should be returned, because it has a child of bar</bar>
  </lizard>
  <pig>
   <bar>return pig, too</bar>
  </pig>
</pets>

这个Xpath给了我所有的宠物:"" / pets / *"`,但是我只想要那些具有名为" bar"的子节点的宠物。

解决方案

这就是它的全部荣耀

/pets/*[bar]

英语:给我所有带有子栏"子代"的"宠物"子代

/pets/child::*[child::bar]

不好意思,我没有看到上一个回复的评论。

但是在这种情况下,我宁愿使用descendant ::轴,该轴包括从指定的位置向下的所有元素:

/pets[descendant::bar]