gpt4 book ai didi

c# - 从 C# 中的 XPathSelectElement(s) 返回值

转载 作者:行者123 更新时间:2023-11-30 17:23:56 26 4
gpt4 key购买 nike

怎么做node.XPathSelectElement()node.XPathSelectElements() behave when the selection is either not a NodeSet or a NodeSet containing non-Elements?例如,他们总是返回一些东西还是他们可以抛出异常?返回值可以为 null 还是它始终是某种 IEnumerable?搜索到的 XML 是常量:

<a>
<b c="d"/>
<e>fgh</e>
<e>xyz</e>
<!-- comment -->
<b/>
</a>

为了说明这一点,这里有一些 XPath 字符串;对于 XPathSelectElement 和 XPathSelectElements 在每种情况下的行为,我将不胜感激(我已将预期的 XSLT NodeSet 放在下面 - 如果您不同意,请发表评论)

  1. //a
  2. //b
  3. //b[1]
  4. //c
  5. //@c
  6. //b | //@c
  7. //e/text()
  8. //comment()
  9. count(//b)

和期望的返回值

  1. 1 个元素
  2. 2 个元素
  3. 1 个元素
  4. 0 个元素
  5. 1个属性节点
  6. 2 个元素和 1 个属性
  7. 2个文本节点
  8. 1个评论节点
  9. 整数2

如果 Xpath 没有返回元素的 IEnumerable (XPathSelectElements) 或单个元素 (XPathSelectElement),是否给出了任何指示或失败是静默的?

最佳答案

如果您告知一个计算结果为 XElements 的有效 XPath 表达式,您将获得:

        Linq.XPathSelectElement            Linq.XPathSelectElements
DOM.SelectSingleNode DOM.SelectNodes
----------------------- ------------------------
"//c" null .Count == 0
"//a" XElement .Count == 1

如果您尝试发送与 XElement 不同的节点类型匹配的 XPath,您将得到一个 InvalidOperationException;如果您不确定 XPath 返回并希望避免捕获异常,您可以使用 node.XPathEvaluate()

关于c# - 从 C# 中的 XPathSelectElement(s) 返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1584429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com