1

我通过 Xdocument 加载 xml:

XDocument document = new XDocument();
                document = XDocument.Load(filepath);
                var list = document.Element("Items").Elements("Item").Select(Items.FromXElement).ToList();

如果 Xml 文件不包含元素“Item”或“Items”,程序会发生 NullReference 异常。在此异常之前,我如何检查我的 xml 文件中的元素内容?

4

2 回答 2

1

做这件事有很多种方法:

选项 1:XPath

using System.Xml.XPath;

var list = document.XPathSelectElements("/Items/Item").Select(Items.FromXElement).ToList();

选项 2:辅助方法

static class XExtensions
{
    public static XElement ElementOrEmpty(this XContainer container, XName name)
    {
        return container.Element(name) ?? new XElement(name);
    }
}

var list = document.ElementOrEmpty("Items").Elements("Item").Select(Items.FromXElement).ToList();

选项 3:根据模式验证 XML 文档

于 2012-10-21T16:51:13.447 回答
1

尝试使用 XPath。通过 LinqPad 运行:

XDocument doc = XDocument.Parse("<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
"<Items>" +
  "<Item>" +
  "</Item>" +
"</Items>");

var items = doc.Root.XPathSelectElements(@"//Items/Item");

items.Dump();

如果不Items存在,将返回一个空的 IEnumerable。

于 2012-10-21T16:51:43.127 回答