xpath nontext元素在条件中具有值

时间:2014-02-21 14:52:48

标签: php xpath simplexml

有没有办法检测价格不是文字节点?
此代码返回第二本书,但如果价格不是文本节点,我需要打印错误。

xpath expression book[price > N]

<book>
    <price>
        <nontext>value</nontext>
    </price>
</book>
<book>
    <price>
        N+1
    </price>
</book>

2 个答案:

答案 0 :(得分:1)

排序。您将无法从XPath中抛出错误,但您可以检查类型。 book[string(number(price))!= 'NaN']

这将检查任何有子节点价格的书籍://book/price[count(./*)>0] 这将为您提供没有子节点的价格结果://book/price[count(./*)=0]

答案 1 :(得分:1)

要查找包含子元素的图书,请使用//book[price/*]。如果您不想要那些,请使用not(...)翻转谓词://book[not(price/*)]

这些查询可以理解为“所有书籍,其中(不)将元素节点作为价格标签的子项”。