bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

サンプルをぱくったサンプル

元ネタはここ。
http://opcdiary.net/?p=3438

マルぱくり。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace LinqToXML
{
    class Program
    {
        static void Main(string[] args)
        {
            var employees = new XDocument(new XDeclaration("1.0", "utf-8", "yes"));
            employees.Add(new XComment("社員名簿"));    // XMLコメントの追加
            employees.Add(new XElement("Employees"));   // Root Elementの作成

            // 1ノード目
            XElement elem = new XElement("Employee");
            elem.Add(new XAttribute("ID", 99999));
            elem.Add(new XElement("Name", "Mike"));
            elem.Add(new XElement("Address", "Niigata"));
            employees.Root.Add(elem);

            // 2ノード目
            elem = new XElement("Employee");
            elem.Add(new XAttribute("ID", 88888));
            elem.Add(new XElement("Name", "John"));
            elem.Add(new XElement("Address", "Fukuoka"));
            employees.Root.Add(elem);

            // XDocumentをxmlとして保存
            employees.Save(@"D:\text\xml\employees.xml");

            // xmlをXDocumentに読み込み
            XDocument readEmployees = XDocument.Load(@"D:\text\xml\employees.xml");

            //Console.WriteLine(readEmployees.Declaration);
            //Console.WriteLine(readEmployees);

            // 木構造を辿ってアクセス
            var query = from x in readEmployees.Element("Employees").Elements("Employee") select x;
            foreach(var i in query)
            {
                String name = i.Element("Name").Value;
                Console.WriteLine(name);
            }

            // エレメント名指定で直接アクセス
            query = from x in readEmployees.Descendants("Employee") select x;
            foreach (var i in query)
            {
                String name = i.Element("Name").Value;
                Console.WriteLine(name);
            }

            Console.ReadLine();
        }
    }
}