属性は、要素に関連付けられている名前と値のペアです。 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);
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 ツリーで動作するコードを記述する開発者にとってのみ重要です。 多くの開発者は、この区別を気にしません。
こちらも参照ください
.NET