作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试使用以下 .NET 代码检查节点是否存在:
xmlDocument.SelectSingleNode(
String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
这总是引发:
XPathException: Expression must evaluate to a node-set.
为什么会出现此错误,我该如何解决?谢谢。
最佳答案
给定的表达式计算为 bool 值,而不是节点集。我假设您想检查 ProjectName 是否等于参数化文本。在这种情况下你需要写
//ErrorTable/ProjectName[text()='{0}']
这会为您提供与给定条件匹配的所有节点(节点集)的列表。此列表可能为空,在这种情况下,示例中的 C#-Expression 将返回 null。
事后思考:您可以使用原始 xpath 表达式,但不能与 SelectSingleNode 一起使用,而是与 Evaluate 一起使用,如下所示:
(bool)xmlDocument.CreateNavigator().Evaluate(String.Format("//ErrorTable/ProjectName/text()='{0}'", projectName));
关于.net - 检查节点是否存在报错 "Expression must evaluate to a node-set"如何解决?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/157044/
我是一名优秀的程序员,十分优秀!