当前位置:  开发笔记 > 编程语言 > 正文

在XML文件中测试XPath的最佳方法是什么?

如何解决《在XML文件中测试XPath的最佳方法是什么?》经验,为你挑选了1个好方法。

最近我一直在使用XPathDocument和XNavigator来解析给定XPath和属性的XML文件.当我事先知道XPath是什么时,它工作得非常好.

有时候,XPath将是几个可能的XPath值之一,我希望能够测试给定的XPath是否存在.

如果我的命名法错了,这就是我所谓的XPath - 给定这个XML blob:


    

我可能正在寻找我称之为"// foo/bar"的XPath,然后读取属性"baz"来获取值.

我用来执行此操作的代码示例:

XPathDocument document = new XPathDocument(filename);
XPathNavigator navigator = document.CreateNavigator();
XPathNavigator node = navigator.SelectSingleNode("//foo/bar");
if(node.HasAttributes)
{
    Console.WriteLine(node.GetAttribute("baz", string.Empty));
}

现在,如果对navigator.SelectSingleNode的调用失败,它将返回NullReferenceException或XPathException.我可以捕获这两个并重构上面的测试,以查看给定的XPath是否返回异常,但我想知道是否有更好的方法?

我没有在Intellisense中看到任何明显的东西.XPathNavigator有.HasAttributes和.HasChildren但是没有一次遍历一个节点的路径,我没有看到任何更好的使用.



1> Jon Skeet..:

如果你给了有效的XPath,但它不匹配任何东西,SelectSingleNode也不会抛出一个NullReferenceException-它只是返回null.

如果你传递SelectSingleNode一些语法上无效的XPath,那就是它会抛出一个XPathException.

通常,您只需要测试返回值是否为null.

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有