[英]xml error:System.Xml.XPath.XPathException: Expression must evaluate to a node-set
[英]Unhandled Exception: System.Xml.XPath.XPathException: Expression must evaluate t o a node-set
我试图选择属性等于某事的所有节点,我在标题中得到了错误。
我的Xpath字符串看起来像//@[id=****]
,有谁知道什么是错的?
您的XPath表达式可能应该是:
//*[@id='something']
这意味着在文档中的任何位置匹配id
属性等于something
内容的所有元素 。
编辑:如果你想要id
属性节点本身而不是他们的父元素,你可以使用:
//*[@id='something']/@id
甚至更好,正如@Dimitre Novatchev建议的那样:
//@id[. = 'something']
我试图选择属性等于某事的所有节点,我在标题中得到了错误。
我的Xpath字符串看起来像
//@[id=****]
,有谁知道什么是错的?
这个表达式有很多问题:
0.1。 //@[some-condition]
谓词只能应用于所选节点,但//@
不会选择任何节点。 @
是attribute::
的缩写,这是一个未完成的节点测试。 它在这里缺少节点类型或节点名称。
什么是正确的是: //@*[some-condition]
或//@attrName[some-condition]
0.2。 id=****
在语法上是无效的,除非* *是一个有效的XPath表达式本身。 我的猜测是你想要获得所有属性值等于某个已知的文字值。 在任何这种情况下,要使用的语法是id='someLiteral
- 请注意文字值周围的单引号(它们也可以是双引号)。
方案 :
//*[@id='something']
这将选择XML文档中具有值为'something'
属性id
所有元素。
//@id[. = 'something']
这将选择XML文档中名为id
所有属性,其值为'something'
。
//@*[. = 'something']
这将选择XML文档中的所有属性(无论其名称如何),其值为'something'
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.