Как устранить ошибку "Выражение должно оцениваться до node -set" при проверке наличия node?
Я пытаюсь проверить наличие node, используя следующий код .NET:
xmlDocument.SelectSingleNode(
String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
Это всегда поднимается:
XPathException: выражение должно оцениваться в node -set.
Почему я получаю эту ошибку и как ее разрешить? Спасибо.
Ответы
Ответ 1
Выраженное выражение оценивается как логическое, а не node -set. Я предполагаю, что вы хотите проверить, равно ли ProjectName параметризованному тексту. В этом случае вам нужно написать
//ErrorTable/ProjectName[text()='{0}']
Это дает вам список всех узлов (узла узлов), соответствующих данному условию. Этот список может быть пустым, и в этом случае С# -Expression в вашем примере возвращает null.
Как запоздалая мысль: вы можете использовать исходное выражение xpath, но не с SelectSingleNode, но с Evaluate, например:
(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
Ответ 2
Try:
Node node = xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName = '{0}'", projectName));
if (node != null) {
// and so on
}
Изменить: глупая ошибка
Ответ 3
В выражении XPath содержалась тонкая ошибка. Это должно было быть:
xmlDocument.SelectSingleNode(String.Format("//ErrorTable/ProjectName[text()='{0}']", projectName));
Предыдущее выражение оценивало логическое значение, которое объясняет ошибку исключения. Спасибо за помощь!