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 に答える