如何使用linq to xml检查xml文件是否包含特定元素

时间:2012-12-24 09:10:12

标签: c# xml exception linq-to-xml

在我的XML文件中,我想检查我的xml文件中是否有设备元素

我尝试使用此代码,但如果找不到设备元素,则会给我Null Reference Exception

public bool HaveAnyDevice()
{
    XDocument doc = XDocument.Load(path);
    return !doc.Element("Settings").Elements("Device").Any();
}

2 个答案:

答案 0 :(得分:1)

您的代码应该有效。我认为你的xml中没有元素Settings。因此,在尝试获取元素之前,只需验证它是否存在:

 public bool HaveAnyDevice()
 {
     XDocument doc = XDocument.Load(path);
     var settings = doc.Element("Settings");
     return (settings != null) && settings.Elements("Device").Any();
 }

答案 1 :(得分:1)

如果您获得NRE,则doc.Element("Settings")为空。您可以在检查下一个元素之前检查它。

return doc.Element("Settings") != null && 
       doc.Element("Settings").Elements("Device").Any();