有没有办法检测价格不是文字节点?
此代码返回第二本书,但如果价格不是文本节点,我需要打印错误。
xpath expression book[price > N]
<book>
<price>
<nontext>value</nontext>
</price>
</book>
<book>
<price>
N+1
</price>
</book>
答案 0 :(得分:1)
排序。您将无法从XPath中抛出错误,但您可以检查类型。 book[string(number(price))!= 'NaN']
这将检查任何有子节点价格的书籍://book/price[count(./*)>0]
这将为您提供没有子节点的价格结果://book/price[count(./*)=0]
答案 1 :(得分:1)
要查找包含子元素的图书,请使用//book[price/*]
。如果您不想要那些,请使用not(...)
翻转谓词://book[not(price/*)]
。
这些查询可以理解为“所有书籍,其中(不)将元素节点作为价格标签的子项”。