题
我想做这个:
//*福
它返回名称以以下结尾的所有节点 福, , 例如 <tarfu />
和 <snafu />
, , 但不是 <fubar />
解决方案
其他提示
这个答案是为了 XPath 1.0 其中没有等价的 XPath 2.0 标准ends-with() 函数.
以下 XPath 1.0 表达式选择 xml 文档中名称以字符串“fu”结尾的所有元素:
//*[substring(name(),string-length(name())-1) = 'fu']
我对迪米特·诺瓦切夫的回答感到困惑,它不会返回匹配项。我知道你的 XPath 一定有一个部分告诉我们“fu”的长度为 2。
建议使用 string-length('fu') 来确定子字符串的内容。
对于那些无法通过他的答案获得结果并且需要使用 xpath 1.0 的解决方案的人:
//*[substring(name(), string-length(name()) - string-length('fu') +1) = 'fu']
查找以“fu”结尾的元素的匹配项
或者
//*[substring(name(), string-length(name()) - string-length('Position') +1) = 'Position']
查找以“Position”结尾的元素的匹配项
不隶属于 StackOverflow