查询不包含满足条件的元素的节点的XPath

时间:2014-11-19 17:42:09

标签: xml xpath

XPath可以查找并返回不包含满足条件的元素的结果节点吗? 例如:
如果我有这个:

<ShoppingCenter>
<bookstore>
  <book>
    <year>2005</year>
   <comments> Boring! </comments>
  </book>
</bookstore> 

<bookstore>
  <book>
    <year>2005</year>
  </book>
</bookstore> 

<bookstore>
  <book>
    <year>2005</year>
   <comments> Interesting! </comments>
  </book>
</bookstore> 

</ShoppingCenter>

我想仅仅得到没有带评论书籍的书店 在这种情况下:第二家商店。

有可能吗?如果是这样 - 怎么样?

1 个答案:

答案 0 :(得分:1)

是的,您可以使用not()

检查节点是否缺失
//bookstore[not(book/comments)]

演示(使用xmllint):

$ xmllint input.xml --xpath "//bookstore[not(book/comments)]"
<bookstore>
  <book>
    <year>2005</year>
  </book>
</bookstore>