首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查节点集是否相等于XPath 1.0

检查节点集是否相等于XPath 1.0
EN

Stack Overflow用户
提问于 2016-04-26 17:26:13
回答 1查看 1.3K关注 0票数 1

我想使用XPath来选择几个以同一个单词结尾的节点,并检查它们是否都相等。所以,比如说,

代码语言:javascript
复制
<a>
    <b-token>123456789</b-token>
    ...
    <c>
        <d>
            <d-token>123456789</d-token>
            ...
        </d>
        <e>
            <e-token>123456789</e-token>
            ...
        </e>
        <f>
            <f-token>123456789</f-token>
            ...
        </f>
    <c>
</a>

因此,我想搜索以"-token“结尾的所有节点,并确保它们是等价的。这可以在XPath 1.0? 2.0中完成吗?XSD?

下面是一个我认为会奏效的例子XPath,但它不管用

代码语言:javascript
复制
String xpathExpression = "/descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token'] = /descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token']";

当我在'=‘之后放置一个特定的值时,它会工作,如下所示:

代码语言:javascript
复制
String xpathExpression = "/descendant-or-self::node()/*[substring(name(), string-length(name() ) - (string-length('token')-1) ) = 'token'] = '123456789'";

如果重要的话,我正在使用Java 7。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-26 18:03:07

如果使用not(//*[substring(local-name(), string-length(local-name()) - 5) = '-token'] != //*[substring(local-name(), string-length(local-name()) - 5) = '-token']),那么只要所有这些元素都具有相同的字符串值,则该比较就为true;如果至少有一个元素的字符串内容不相等,则为false。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36871765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档