我问一个关于使用XPath函数there
的问题但是我遇到了关于这个例外的问题:
[System.Xml.XPath.XPathException] = {"Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function."}
xml如下:
<x-config>
<!--user location-->
<x-list>
<Country code="TW,UK,MY" />
<Country code="US,CA,MX" />
<Country code="IN,PR,VI,IR" />
<Country code="Others" />
</x-list>
我使用以下代码来检索匹配项:
XmlNode countryNode = cdnConfig.SelectSingleNode(
string.Format("x-config/x-list/Country[fn:contains(@code, {0})]", countryCode)
);
我是XPath的新手。任何人都可以详细说明这一点并给出一些解决方法吗?
非常感谢。
答案 0 :(得分:2)
This SO question应该回答。
简而言之:无法识别XPath表达式中的fn
前缀。您可以提供XmlNamespaceManager
的实例来声明前缀,但由于.NET显然没有XPath 2.0支持,这无济于事。
但是,XPath 1.0已经支持contains
函数,因此不需要XPath 2.0:
XmlNode countryNode = cdnConfig.SelectSingleNode(
string.Format("x-config/x-list/Country[contains(@code, '{0}')]", countryCode)
); ↑