XElement クラスの概要

XElement クラスは、LINQ to XML の基本的なクラスの 1 つです。 これは XML 要素を表します。 次の一覧は、このクラスでできることをまとめたものです。

  • 要素を作成します。
  • 要素のコンテンツを変更します。
  • 子要素を追加、変更、削除します。
  • 要素に属性を追加します。
  • 要素のコンテンツをテキスト形式でシリアル化します。

System.XmlXmlReaderXmlWriter などの、XslCompiledTransform の他のクラスと相互運用することもできます。

この記事では、XElement クラスによって提供される機能について説明します。

XML ツリーの構築

次のようなさまざまな方法で XML ツリーを構築できます。

  • コードで XML ツリーを構築できます。 詳細については、XML ツリーに関する記事を参照してください。
  • TextReader、テキスト ファイル、Web アドレス (URL) など、さまざまなソースから XML を解析できます。 詳細については、XML の解析に関するページを参照してください。
  • XmlReader を使用してツリーを設定できます。 詳細については、「ReadFrom」を参照してください。
  • XmlWriter にコンテンツを書き込むことができるモジュールがある場合は、CreateWriter メソッドを使用してライターを作成し、このライターをモジュールに渡し、XmlWriter に書き込まれたコンテンツを使用して XML ツリーを設定できます。

ツリーを作成する例を次に示します。 C# バージョンでは、入れ子になった要素の作成が使用されます。 Visual Basic でも同じ手法を使用できますが、この例では XML リテラルを使用します。

XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement("Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144"),
            new XElement("Address",
                new XElement("Street1", "123 Main St"),
                new XElement("City", "Mercer Island"),
                new XElement("State", "WA"),
                new XElement("Postal", "68042")
            )
        )
    );
Dim contacts As XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone>206-555-0144</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

また、次の例に示すように、LINQ to XML クエリを使用して XML ツリーを設定することもできます。

XElement srcTree = new XElement("Root",
    new XElement("Element", 1),
    new XElement("Element", 2),
    new XElement("Element", 3),
    new XElement("Element", 4),
    new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    from el in srcTree.Elements()
    where (int)el > 2
    select el
);
Console.WriteLine(xmlTree);
Dim srcTree As XElement = _
    <Root>
        <Element>1</Element>
        <Element>2</Element>
        <Element>3</Element>
        <Element>4</Element>
        <Element>5</Element>
    </Root>
Dim xmlTree As XElement = _
    <Root>
        <Child>1</Child>
        <Child>2</Child>
        <%= From el In srcTree.Elements() _
            Where el.Value > 2 _
            Select el %>
    </Root>
Console.WriteLine(xmlTree)

この例を実行すると、次の出力が生成されます。

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Element>3</Element>
  <Element>4</Element>
  <Element>5</Element>
</Root>

XML ツリーをシリアル化する

XML ツリーは、FileTextWriter、または XmlWriter にシリアル化できます。

詳しくは、XML ツリーのシリアル化に関するページをご覧ください。

軸メソッドによる XML データの取得

軸メソッドを使用すると、属性、子要素、子孫要素、および祖先要素を取得できます。 LINQ to XML クエリは、軸メソッドに対して機能し、XML ツリーを操作して処理するための、柔軟で強力な複数の機能を備えています。

詳しくは、「LINQ to XML 軸の概要」をご覧ください。

XML ツリーのクエリ

XML ツリーからデータを抽出する LINQ to XML クエリを記述できます。

詳しくは、「XML ツリーのクエリの概要」をご覧ください。

XML ツリーを変更する

要素を変更するには、そのコンテンツや属性を変更するなど、さまざまな方法があります。 要素を親から削除することもできます。

詳細については、XML ツリーの変更に関するページを参照してください。

関連項目