次の方法で共有


XAttribute クラスの概要

更新 : November 2007

属性は、要素に関連付けられている名前と値のペアです。XAttribute クラスは、XML 属性を表します。

概要

LINQ to XML での属性の操作は、要素の操作に似ています。コンストラクタはほぼ同じです。それぞれのコレクションの取得に使用するメソッドもほぼ同じです。属性のコレクションの LINQ クエリ式は、要素のコレクションの LINQ クエリ式とよく似ています。

属性が要素に追加された順序は保持されます。つまり、属性を反復処理する場合、属性は追加された順序と同じ順序で表示されます。

XAttribute コンストラクタ

最もよく使用する XAttribute クラスのコンストラクタを次に示します。

コンストラクタ

説明

XAttribute(XName name, object content)

XAttribute オブジェクトを作成します。name 引数には属性の名前を指定し、content には属性のコンテンツを指定します。

属性を持つ要素の作成

次のコードは、属性を含む要素を作成する一般的なタスクを示しています。

XElement phone = new XElement("Phone",
    new XAttribute("Type", "Home"),
    "555-555-5555");
Console.WriteLine(phone);

Visual Basic では、XML リテラルを使用できます。

Dim phone As XElement = <Phone Type="Home">555-555-5555</Phone>
Console.WriteLine(phone)

この例では次の出力が生成されます。

<Phone Type="Home">555-555-5555</Phone>

属性の関数型構築

XAttribute オブジェクトは、XElement オブジェクトの構築と共にインラインで構築できます。

XElement c = new XElement("Customers",
    new XElement("Customer",
        new XElement("Name", "John Doe"),
        new XElement("PhoneNumbers",
            new XElement("Phone",
                new XAttribute("type", "home"),
                "555-555-5555"),
            new XElement("Phone",
                new XAttribute("type", "work"),
                "666-666-6666")
        )
    )
);
Console.WriteLine(c);
Dim c As XElement = _
    <Customers>
        <Customer>
            <Name>John Doe</Name>
            <PhoneNumbers>
                <Phone type="home">555-555-5555</Phone>
                <Phone type="work">666-666-6666</Phone>
            </PhoneNumbers>
        </Customer>
    </Customers>
Console.WriteLine(c)

この例では次の出力が生成されます。

<Customers>
  <Customer>
    <Name>John Doe</Name>
    <PhoneNumbers>
      <Phone type="home">555-555-5555</Phone>
      <Phone type="work">666-666-6666</Phone>
    </PhoneNumbers>
  </Customer>
</Customers>

属性はノードではない

属性と要素にはいくつかの違いがあります。XAttribute オブジェクトは XML ツリーのノードではありません。属性は、XML 要素に関連付けられている名前と値のペアです。ドキュメント オブジェクト モデル (DOM) とは異なり、XML の構造をより密接に反映します。XAttribute オブジェクトは実際には XML ツリーのノードではありませんが、XAttribute オブジェクトの操作は XElement オブジェクトの操作とよく似ています。

属性と要素の区別は主に、ノード レベルで XML ツリーを操作するコードを記述する開発者にとってのみ重要な意味を持ちます。多くの開発者は、この区別を考慮する必要はありません。

参照

概念

LINQ to XML プログラミングの概要