检查节点是否存在时,如何解决“表达式必须计算为节点集”错误?

我正在尝试使用以下.NET代码检查是否存在节点:

xmlDocument.SelectSingleNode(
格式(“//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));

发表评论