有人可以解释我为什么这不起作用吗?
我正在执行
XmlNode xmlNode = xmlDocument.SelectSingleNode("//(artist|author)");
我得到
System.Xml.XPath.XPathException: Expression must evaluate to a node-set.
but this works and does not raise the exception even when there are many artist nodes
XmlNode xmlNode = xmlDocument.SelectSingleNode("//artist");
最佳答案
据我所知,您可以使用“|”只是在 XPath 查询的顶层,所以尝试查询
"//artist|//author"
再见了,递归搜索 (//) 的速度不是很快,因此请确保您的 dom 文档很小。
更新:
我在 specification 中查了一下:
这意味着无论你在“|”的左边和右边写什么需要单独用作 xpath 查询,“|”然后从它创建联合。
具体来说,您不能说“递归搜索(称为作者的东西或称为艺术家的东西)”,因为“称为作者的东西”不会评估 xpath-query(节点集)的结果。
关于c# - System.Xml.XPath.XPathException : Expression must evaluate to a node-set when executing SelectSingleNode ("//(artist|author)"),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/631173/