6

我正在使用 .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 中完成吗?如果可以,您能否提供一个小示例来说明如何将其设置为工作?

谢谢

4

1 回答 1

7

.NET 当前不支持 XPath 2.0。有关更多详细信息和第三方替代方案,请参阅此问题:XPath and 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
于 2011-09-22T20:45:16.147 回答