Мы хотели бы реализовать проверки существования элементов через выражение XPath. Выражения XPath определяются извне. Мы пытаемся использовать метод расширения XPathEvaluate из System.Xml.XPath, но он жалуется, когда мы пытаемся сделать следующее.Возвращение логического выражения из выражения XPath
XDocument d = new XDocument(
new XElement("test",
new XElement("element"),
new XElement("element")));
bool b = (bool)d.XPathEvaluate("/test/element[exists()]");
Эта функция в настоящее время завершается с исключением «пространство имен диспетчера или XsltContext необходимо. Этот запрос имеет префикс, переменная или определяемой пользователем функции.». Мы получаем то же сообщение, если попробуем exists(/test/element)
.
Одной из других вещей, которые мы хотели бы выразить в выражении XPath, является количество элементов, например. count(/text/element) = 2
.
Условие тестирования должно быть частью выражения XPath.
Вызов функции d.XPathEvaluate("/test/element[last()]")
оценивается в соответствии с ожиданиями.
Возможно ли использовать XPathEvaluate
таким образом?
[изменить] Да.
Если нет, есть ли какие-либо альтернативы в инфраструктуре .Net?
[изменить] Да.
[Изменить] Оставшийся вопрос: почему функция exists
не работает?
Не раньше, а просто протестировано и оно работает. –