XPath可以匹配元素名称的部分吗?

时间:2008-09-05 15:58:17

标签: xml xpath

我想这样做:

  

// *福

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

3 个答案:

答案 0 :(得分:43)

此答案适用于XPath 1.0 ,其中没有XPath 2.0 standard ends-with() function的等效内容。

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

//*[substring(name(),string-length(name())-1) = 'fu']

答案 1 :(得分:36)

做类似的事情:

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

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

答案 2 :(得分:2)

我在Dimitre Novatchev的回答中挣扎,它不会返回比赛。我知道你的XPath必须有一节告诉“fu”的长度是2。

建议使用字符串长度('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”结尾的元素的匹配