Как использовать методы XPath 2.0 в .NET 4.0? - PullRequest
6 голосов
/ 22 сентября 2011

Я использую .NET 4.0, и я хотел бы использовать методы XPath 2.0, такие как ([Matches ()] [1], [верхний регистр ()] [2], [нижний регистр ()] [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, и если да, то можете ли вы привести небольшой пример того, как настроить его на работу?

Спасибо

1 Ответ

7 голосов
/ 23 сентября 2011

.NET в настоящее время не поддерживает XPath 2.0. См. Этот вопрос для получения более подробной информации и альтернатив сторонних производителей: XPath и XSLT 2.0 для .NET?

Если вы не хотите использовать сторонние библиотеки, вы можете выполнить минимально необходимый запрос, чтобы получить целевой элемент (ы) с XPath 1.0 или LINQ to XML, а затем выполнить дополнительную работу с данными с помощью методов .NET выполнить необходимые проверки и модификации:

  • Matches = Regex.IsMatch - учтите, что шаблон регулярного выражения XPath может иметь метасимволы, отличные от шаблона .NET, поэтому может потребоваться некоторый перевод.
  • upper-case = String.ToUpper - ссылка содержит также параметры культуры / инварианта, если они вам нужны
  • lower-case = String.ToLower
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...