首页 文章

需要一个XPath来检查任何子孙,孙子孙等的属性值

提问于
浏览
2

所以给定这个XML ...

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <tree dah="false">
        <tree dah="false">
            <tree dah="false"/>
            <tree dah="false"/>
        </tree>
        <tree dah="false">
            <tree dah="true"/>
            <tree dah="false"/>
        </tree>
    </tree>
</root>

...我需要一个评估为true的XPath,因为至少有一个树/ @ dah ='true' .

但如果XML看起来像这样,那将评估为false ...

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <tree dah="false">
        <tree dah="false">
            <tree dah="false"/>
            <tree dah="false"/>
        </tree>
        <tree dah="false">
            <tree dah="false"/>
            <tree dah="false"/>
        </tree>
    </tree>
</root>

此外,树节点可以是任何深度 . 在我的例子中我有三个级别,但它可以更深入 .

2 回答

  • 1
    /root//tree[@dah='true']
    
  • 2

    Use

    boolean(/root//tree[@dah='true'])
    

    要么

    boolean((/root//tree[@dah='true'])[1])
    

    Both expressions are equivalent ,但是使用哑(非优化)XPath引擎时,第二个会更有效 .

    The result is true() if there exists a tree element in the XML document with a dah attribute with value 'true' - 否则结果为 false() .

相关问题