如何在.NET 4.0中使用XPath 2.0方法?

AAA*_*Dad 6 xslt .net-4.0 xpath-2.0

我正在使用.NET 4.0,我想使用XPath 2.0方法,如([Matches()] [1],[upper-case()] [2],[lower-case()] [3])试图在文档中查找元素.

示例XPath: "/MyDocument/MyNode[matches(@MyAttribute, 'MyValue', 'i')]"

我尝试过使用:

  • System.Xml.XPath.XPathNavigator.Compile()
  • System.Xml.XmlDocument.SelectNodes()
  • System.Xml.Linq.XDocument.SelectElements()

但我基本上抛出异常"UndefinedXsltContextException"(或类似的东西).这可以在.NET 4.0中完成,如果是这样,你能提供一个关于如何设置它的小例子吗?

谢谢

Ahm*_*eed 7

.NET目前不支持XPath 2.0.有关更多详细信息和第三方备选方案,请参阅此问题:XPath和XSLT 2.0 for .NET?

如果您不想使用第三方库,则可以执行所需的最低查询以使用XPath 1.0或LINQ to XML获取目标元素,然后使用.NET方法对数据执行其他操作以执行所需的检查和修改:

  • Matches= Regex.IsMatch- 请注意,XPath正则表达式模式可能具有与.NET模式不同的元字符,因此可能需要进行一些转换.
  • upper-case= String.ToUpper- 链接还提到了文化/不变选项,以防您需要它们
  • lower-case = String.ToLower