DOM の要素に対して新しい属性を作成する

属性はノードではないため、新しい属性を作成する方法は、他のノード型を作成する方法と異なります。 これらは、要素ノードのプロパティであり、要素に関連付けられた XmlAttributeCollection に格納されます。 属性を作成して要素に追加するには、次の 2 つの方法があります。

  • 要素ノードを取得し、SetAttribute を使用してその要素の属性コレクションに属性を追加します。

  • CreateAttribute メソッドを使用して XmlAttribute ノードを作成します。要素ノードを取得し、SetAttributeNode を使用してその要素の属性コレクションにノードを追加します。

SetAttribute メソッドを使用して属性を要素に追加する方法を次の例に示します。

Imports System.IO
Imports System.Xml

Public Class Sample

    Public Shared Sub Main()

        Dim doc As New XmlDocument()
        doc.LoadXml("<book xmlns:bk='urn:samples' bk:ISBN='1-861001-57-5'>" & _
                    "<title>Pride And Prejudice</title>" & _
                    "</book>")
        Dim root As XmlElement = doc.DocumentElement

        ' Add a new attribute.
        root.SetAttribute("genre", "urn:samples", "novel")

        Console.WriteLine("Display the modified XML...")
        Console.WriteLine(doc.InnerXml)
    End Sub
End Class
using System;
using System.IO;
using System.Xml;

public class Sample
{
    public static void Main()
    {
        var doc = new XmlDocument();
        doc.LoadXml("<book xmlns:bk='urn:samples' bk:ISBN='1-861001-57-5'>" +
                    "<title>Pride And Prejudice</title>" +
                    "</book>");
        XmlElement root = doc.DocumentElement;

        // Add a new attribute.
        root.SetAttribute("genre", "urn:samples", "novel");

        Console.WriteLine("Display the modified XML...");
        Console.WriteLine(doc.InnerXml);
    }
}

CreateAttribute メソッドを使用して新しい属性を作成する方法を次の例に示します。 この属性は、SetAttributeNode メソッドを使用して、book 要素の属性コレクションに追加されます。

次の XML を使用します。

<book genre='novel' ISBN='1-861001-57-5'>
<title>Pride And Prejudice</title>
</book>

新しい属性を作成し、その属性の値を設定します。

Dim attr As XmlAttribute = doc.CreateAttribute("publisher")
attr.Value = "WorldWide Publishing"
XmlAttribute attr = doc.CreateAttribute("publisher");
attr.Value = "WorldWide Publishing";

属性を要素に追加します。

doc.DocumentElement.SetAttributeNode(attr)
doc.DocumentElement.SetAttributeNode(attr);

出力

<book genre="novel" ISBN="1-861001-57-5" publisher="WorldWide Publishing">
<title>Pride And Prejudice</title>
</book>

完全なコード サンプルは CreateAttribute にあります。

属性の XmlNamedNodeMap を作成し、SetNamedItem メソッドを使用すると、名前を指定して属性を追加できます。 詳細については、「NamedNodeMaps と NodeLists のノード コレクション」を参照してください。

既定の属性

既定の属性を持つと宣言された要素を作成すると、既定値を持つ新しい既定の属性が XML ドキュメント オブジェクト モデル (DOM) によって作成され、その要素に割り当てられます。 既定の属性の子ノードも同時に作成されます。

属性の子ノード

属性ノードの値は、その属性の子ノードになります。 有効な子ノードの種類は 2 つだけです。XmlText ノード、および XmlEntityReference ノードです。 これらのノードは、FirstChildLastChild のようなメソッドが子ノードとして処理するという意味で、子ノードと見なされます。 属性が子ノードを持つという点は、属性または属性の子ノードを削除するときに重要になります。 詳細については、「DOM の要素ノードからの属性の削除」を参照してください。

関連項目