我一直在使用try / catch语句来检查在解析它时是否存在元素。显然,这不是最好的方法。我一直在使用LINQ(lambda表达式)进行大部分解析,但我只是不知道如何检测元素是否存在。
我发现一些解决方案的一个大问题是,它们使用的代码比使用try / catch块多3-4倍,这种方法会失败。
我认为代码看起来像这样:
if(document.Element("myElement").Exists())
{
var myValue = document.Element("myElement").Value;
}
我确实发现了这个link,但在我的情况下循环是不必要的,因为我可以保证它只会出现一次。此外,必须创建一个似乎不必要的虚拟元素。看起来不是检查的最佳方式(或好方法)。有什么想法吗?
答案 0 :(得分:4)
XElement e = document.Element("myElement");
if (e != null)
{
var myValue = e.Value;
}
http://msdn.microsoft.com/en-us/library/system.xml.linq.xcontainer.element.aspx
“获取具有指定XName的第一个(按文档顺序)子元素。”
“如果没有指定名称的元素,则返回Nothing。”
答案 1 :(得分:0)
Any()是Linq命令。
Assert.IsFalse( new [] { 1, 2, 3, 4 }.Any( i => i == 5 ));
答案 2 :(得分:-1)
Any()
是检查元素是否存在的最简单方法。
如果您必须确保该元素是唯一的,那么您必须执行.Count() == 1
之类的操作。或者,您可以实现自己的扩展方法,但这只是.Count == 1
的包装器。