我想做这个:

//*福

它返回名称以以下结尾的所有节点 , , 例如 <tarfu /><snafu />, , 但不是 <fubar />

有帮助吗?

解决方案

做类似的事情:

//*[ends-with(name(), 'fu')]

要获得良好的 XPath 参考,请查看 W3学校.

其他提示

这个答案是为了 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”结尾的元素的匹配项

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top