How to use XPath 2.0 Methods in .NET 4.0?
Asked Answered
P

1

7

I am using .NET 4.0 and I would like to use XPath 2.0 methods such as ([Matches()][1], [upper-case()][2], [lower-case()][3]) when trying to find elements in a document.

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

I have tried using:

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

But I basically throw the exception "UndefinedXsltContextException" (or something similar). Can this be done in .NET 4.0 and if so can you provide a small example on how to set it up to work?

Thanks

Parfleche answered 22/9, 2011 at 19:47 Comment(0)
M
10

.NET doesn't currently support XPath 2.0. See this question for more details and third-party alternatives: XPath and XSLT 2.0 for .NET?

If you don't want to use third-party libraries you could do the minimum required query to get your target element(s) with either XPath 1.0 or LINQ to XML, then do additional work on the data using .NET methods to perform the checks and modifications desired:

  • Matches = Regex.IsMatch - be aware that the XPath regular expression pattern might have different metacharacters than the .NET pattern, so some translation might be needed.
  • upper-case = String.ToUpper - the link mentions culture/invariant options too, in case you need them
  • lower-case = String.ToLower
Minimum answered 22/9, 2011 at 20:45 Comment(3)
Is it still actual? I found conflicting information.Centistere
@Centistere my response is a few years old and I didn't find anything new on this subject. If you have new information that this is now supported please post it as an answer.Minimum
See also the UserVoice suggestion on this topic.Soares

© 2022 - 2024 — McMap. All rights reserved.