xpath和c#

7 c# xpath

我正在尝试创建一个搜索XML文档的winform应用程序.对于我的搜索,我需要通过使用小写()xpath函数将xpath条件中的XML属性转换为小写.这会导致与函数名称空间相关的问题.

我试图手动添加名称空间:

        XmlNamespaceManager nsMgr = new XmlNamespaceManager(prs.Doc.NameTable);
        nsMgr.AddNamespace("fn", "http://www.w3.org/2005/02/xpath-functions");
        XmlNodeList results = prs.Doc.SelectNodes("//function[starts-with(fn:lower-case(@name),'" + txtSearch.Text + "')]",nsMgr);
Run Code Online (Sandbox Code Playgroud)

但我仍然遇到异常:由于函数未知,此查询需要XsltContext.

Dim*_*hev 5

lower-case()函数是为XPath 2.0定义的.

XPath 1.0中将translate()字母转换为小写字母仍然可以使用如下所示函数:

translate(@attrName, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',                                       'abcdefghijklmnopqrstuvwxyz')


Ray*_* Lu 4

fn:lower-case 在XQuery 1.0 和 XPath 2.0中定义。XSLT 2.0 与 XPATH 2.0 配合使用。

AFAIK,.NET 还不支持 XPATH 2.0。.NET 的 XSLT 版本也是 1.0,还不是 2.0。