我正在尝试获取具有以特定 id 结尾的属性的标签。
like <span id="ctl00_ContentPlaceHolder1_Country">
我想获取 id 以“国家/地区”结尾的跨度
我尝试以下xpath//span[ends-with(@id,'Country')]
但我得到以下异常
“需要命名空间管理器或 XsltContext。此查询具有前缀、变量或用户定义的函数。”
奇怪的是包含效果很好
所以下面的 xpath 可以工作//span[contains(@id,'Country')]
任何想法为什么会发生这种情况?
谢谢
功能 ends-with() http://www.w3.org/TR/xpath-functions/#func-ends-with 没有定义为XPath 1.0 http://www.w3.org/TR/xpath 但仅用于XPath 2.0 http://www.w3.org/TR/xpath20/ and XQuery http://www.w3.org/TR/xquery/.
您正在使用.NET。 。NET 目前尚未实现 XPath 2.0 http://www.w3.org/TR/xpath20/, XSLT 2.0 http://www.w3.org/TR/xslt20/ or XQuery http://www.w3.org/TR/xquery/.
可以轻松构造一个 XPath 1.0 表达式,其计算产生与函数相同的结果ends-with()
:
$str2 = substring($str1, string-length($str1)- string-length($str2) +1)
产生相同的布尔结果(true()
or false()
) as:
ends-with($str1, $str2)
在您的具体情况下,您只需要用正确的表达式替换$str1
and $str2
。因此,他们是/myXml/data
and 'World'
.
所以,要使用的 XPath 1.0 表达式,即相当于 XPath 2.0 表达式ends-with(/myXml/data, 'World')
is:
'World' =
substring(/myXml/data,
string-length(/myXml/data) - string-length('World') +1
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)