Я пытаюсь проверить наличие узла, используя следующий код.NET:
xmlDocument.SelectSingleNode(
String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
Это всегда вызывает:
XPathException: выражение должно оцениваться как набор узлов.
Почему я получаю эту ошибку и как ее решить? Спасибо.
Решение проблемы
Данное выражение имеет логическое значение, а не набор узлов. Я предполагаю, что вы хотите проверить, соответствует ли ProjectName параметризованному тексту. В этом случае нужно написать
//ErrorTable/ProjectName[text()='{0}']
Это дает вам список всех узлов (набор узлов), соответствующих заданному условию. Этот список может быть пустым, и в этом случае выражение C# в вашем образце вернет значение null.
В качестве запоздалой мысли: вы можете использовать исходное выражение xpath, но не с SelectSingleNode, а с Evaluate, например:
(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
Комментариев нет:
Отправить комментарий