【问题标题】:How can I test for a valid index如何测试有效索引
【发布时间】:2013-06-05 12:32:51
【问题描述】:

在不存在虚假节点的情况下,具有“/root/name[bogus = 'dave']”的 XPath 是合法的。它将在 SelectSingleNode 上返回 null。

但是在根目录下只有 4 个名称节点的“/root/name[5]”的 XPath 会引发异常。 (至少在 .NET 中是这样)。

什么是测试索引值是否有效的好方法?

谢谢 - 戴夫

【问题讨论】:

  • 请向我们展示导致异常的代码。
  • (因为我可以先var x = XDocument.Parse("<root><a /></root>"); 然后var n = x.XPathSelectElement("/root/a[5]"); 得到null,不是例外)
  • 是的,如果 xspth 没有找到某些东西,则不应该(也不是)异常。看起来你没有测试返回是否不为空。
  • 抛出什么异常?

标签: .net xml xpath


【解决方案1】:

在 XPath 1.0 中,您可以计算这个 XPath 表达式:

bool(/root/name[5])

如果<root> 元素有第五个<name> 子元素,则返回true。

但正如其他人所说,XPath 本身不应该因为尝试访问不存在的节点而引发异常。但是,如果您尝试取消引用空值,.NET 库可能会引发异常。

【讨论】:

    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 2012-10-25
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2019-11-22
    相关资源
    最近更新 更多