当选择不是NodeSet或包含非元素的NodeSet时,node.XPathSelectElement()
和node.XPathSelectElements()
如何表现?例如,他们总是返回一些东西,还是可以抛出异常?返回值可以为null还是总是某种IEnumerable?搜索到的XML是不变的:
<a>
<b c="d"/>
<e>fgh</e>
<e>xyz</e>
<!-- comment -->
<b/>
</a>
为了说明这里有一些XPath字符串;我将非常感谢每种情况下XPathSelectElement和XPathSelectElements的行为(我已将下面的预期XSLT NodeSet放入 - 如果您不同意请发表评论)
//a
//b
//b[1]
//c
//@c
//b | //@c
//e/text()
//comment()
count(//b)
和预期的回报值
如果Xpath没有返回IEnumerable of Elements(XPathSelectElements)或单个Element(XPathSelectElement)是否给出任何指示或失败是否为无声?
答案 0 :(得分:2)
如果您通知一个有效的XPath表达式,其评估结果为XElements
,那么您将获得:
Linq.XPathSelectElement Linq.XPathSelectElements
DOM.SelectSingleNode DOM.SelectNodes
----------------------- ------------------------
"//c" null .Count == 0
"//a" XElement .Count == 1
如果您尝试发送匹配不同于XElement的节点类型的XPath,您将获得InvalidOperationException
;如果您不确定XPath返回并希望避免捕获异常,则可以使用node.XPathEvaluate()