36

我想做这个:

//*福

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

4

3 回答 3

50

此答案适用于XPath 1.0,其中没有等效的XPath 2.0 标准 ends-with() 函数

以下 XPath 1.0 表达式选择 xml 文档中的所有元素,其名称以字符串“fu”结尾:

//*[substring(name(),string-length(name())-1) = 'fu']
于 2008-11-14T00:22:37.330 回答
41

执行以下操作:

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

要获得良好的 XPath 参考,请查看W3Schools

于 2008-09-05T16:06:18.917 回答
2

我对 Dimitre Novatchev 的回答感到困惑,它不会返回匹配项。我知道您的 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”结尾的元素的匹配项

于 2017-06-08T12:16:02.660 回答