Я получаю исключение недопустимого токена при попытке оценить выражение ниже через XpathNavigor:
var expression = if(//DovizCins = 'YTL') then '1' else '2';
var nav = doc.CreateNavigator();
XPathExpression xp = XPathExpression.Compile(expression);
var value = nav.Evaluate(xp);
return value?.ToString() ?? string.Empty;
Исключение составляет:
System.Xml.XPath.XPathException: '' if (// DovizCins = 'YTL') then '1' else '2' 'имеет недопустимый токен.'
2 ответа
Технология XML от Microsoft сильно устарела. Это синтаксис XPath 2.0, представленный в 2007 году, и Microsoft еще предстоит его догнать: они все еще поставляют XPath 1.0.
Я полностью согласен с Майклом Каем.
Официальная документация MS ошибочна: https://docs.microsoft.com/en-us/dotnet/api/system.xml.xpath?view=netframework-4.7.1
Отрывок
"... Пространство имен System.Xml.XPath содержит классы, которые определяют модель курсора для навигации и редактирования элементов информации XML как экземпляры модели данных XQuery 1.0 и XPath 2.0 ..."
XQuery 1.0 и XPath 2.0 частично поддерживаются MS SQL Server. Инфраструктура .Net не поддерживает XQuery, а его XPath - 1.0.
Похожие вопросы
Связанные вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.