LINQ to XML (XLINQ)

XDocument

作成

XDocument document = new XDocument();
document.Declaration = new XDeclaration("1.0", "utf-8", "");

XElement root = new XElement("root");
XElement section = new XElement("section");

for (int i = 1; i <= 2; i++)
{
    XElement data = new XElement("data");
    data.Add(new XAttribute("name", i));
    data.Value = "val" + i;

    section.Add(data);
}

root.Add(section);

document.Add(root);
document.Save(fileName);

次のようなXML文書が作成されます。

<?xml version="1.0" encoding="utf-8"?>
<root>
  <section>
    <data name="1">val1</data>
    <data name="2">val2</data>
  </section>
</root>

読み込み

XDocument document = XDocument.Load(fileName);

XElement root = document.Element("root");
XElement section = root.Element("section");

IEnumerable<XElement> dataElements = section.Elements("data");
foreach (XElement data in dataElements)
{
    string name = data.Attribute("name").Value; // 1, 2
    string value = data.Value;                  // val1, val2
}

次のように検索できます。

IEnumerable<XElement> children = section.Elements();
XElement child = children.First(elem => elem.Attribute("name").Value == "1");
string val = child.Value; // val1

パフォーマンス

データのアクセスに時間がかかる場合には、XmlWriterやXmlReaderで部分的に読み書きします。

Microsoft Learnから検索