首页 > 解决方案 > 如何使用 XPath 匹配以数字结尾的字符串

问题描述

问题是我正在寻找构建一个 XPath 表达式来获取具有属性 XXX 的节点,这些节点具有像 TP* 这样的值,其中星号是一个数字。假设我有这个 XML 文件

<tagA attA="VAL1">text</tagA>
<tagB attB="VAL333">text</tagB>
<tagA attA="VAL2">text</tagA>
<tagA attA="V2">text</tagA>

所以 xpath 表达式应该让我所有tagA的属性都具有attrA模式的值VAL*
//tagA[@attrA[matches('VAL\d')]]:不起作用

标签: javaxmlxpathjava-8

解决方案


如果您需要 XPath 1.0 解决方案,请尝试以下操作:

//tagA[boolean(number(substring-after(@attA, "VAL"))) or number(substring-after(@attA, "VAL")) = 0]

如果@attA不能"VAL0",那么就

//tagA[boolean(number(substring-after(@attA, "VAL")))]

推荐阅读