執筆者: セイザインデザイン、PROJECT KySS 薬師寺 聖

動作確認環境: Visual Studio 2010、Windows 7 Professional 32 bit


System.Xml 名前空間の DOM (Document Object Model)、System.Xml.Linq 名前空間の LINQ to XML、また Visual Basic では XML リテラルを用いて、XML ドキュメントを構成することができます。

コンソール アプリケーションを作成して、リスト 1 のような XML ツリーを、それぞれの方法で作成しています。ソリューション名は、"CreateXml" としています。

リスト 1 生成する XML ツリー

XML
<?xml version="1.0"?> 
<ルート要素> 
 <要素A 属性1="属性値">内容テキスト</要素A> 
</ルート要素> 
 

DOM を用いる場合

リスト 2 は、DOM を用いて、リスト 1 の XML ツリーを構築するコードです。

まず、XmlDocument クラスの新しいインスタンスを初期化し、CreateXmlDeclaration メソッドを用いて生成した XML 宣言を追加します。その際、XML バージョンには 1.0、encoding および standalone には Nothing を指定します。

要素を生成するには、createElement メソッドを、テキスト ノードを生成するには createTextNode メソッドを使います。

生成した要素をルート要素に追加したり、生成したテキスト ノードを要素の内容として追加するには、Node インタフェース、appendChild メソッドを使います。

属性名と属性値を指定し、属性を生成して、XmlElement.SetAttribute メソッドで属性を要素にセットしています。

リスト 2 DOM を用いてリスト 1 の XML ツリーを生成する

Visual Basic
Option Strict On 
Imports System.Xml 
 
Module Module1 
 
    Sub Main() 
        Dim myXmlDoc As New XmlDocument() 
 
        myXmlDoc.AppendChild(myXmlDoc.CreateXmlDeclaration("1.0"NothingNothing)) 
        myXmlDoc.AppendChild(myXmlDoc.CreateElement("ルート要素")) 
 
        Dim myXmlElement As XmlElement = myXmlDoc.CreateElement("要素A") 
        Dim myXmlAttr As String = "属性1" 
        Dim myXmlAttrValue As String = "属性値" 
        myXmlElement.SetAttribute(myXmlAttr, myXmlAttrValue) 
 
        myXmlElement.AppendChild(myXmlDoc.CreateTextNode("内容テキスト")) 
        myXmlDoc.DocumentElement.AppendChild(myXmlElement) 
        Console.WriteLine(myXmlDoc.OuterXml) 
    End Sub 
 
End Module 
 

LINQ to XML を用いる場合

次の 2 つの方法があります。

1 つは、関数型構築の方法です。リスト 3 では、XDeclaration と内容を指定し、XElement.Attribute メソッドにより属性を指定して、XML ツリーを生成しています。

もう 1 つは、XML リテラルを使用する方法です。リスト 4 では、コードの中に直接 XML リテラルを指定して、ツリーを生成しています。

リスト 3 LINQ to XML 関数型構築により、リスト 1 の XML ツリーを生成

Visual Basic
Dim myXmlDoc As XDocument = New XDocument(New XDeclaration("1.0""utf-8""yes"), New XElement("ルート要素"New XElement("要素A""内容テキスト"New XAttribute("属性1""属性値")))) 
Console.WriteLine(myXmlDoc.ToString)) 
 
 

リスト 4 LINQ to XML のリテラル使用により、リスト 1 の XML ツリーを生成

Visual Basic
Dim myXmlDoc As XElement = <ルート要素><要素A 属性1="属性値">内容テキスト</要素A></ルート要素> 
Console.WriteLine(myXmlDoc.ToString) 
 
 

いずれの方法でも、「デバッグなしで実行」すると、リスト 1 の XML ツリーが構築されます。

関連リンク


Code Recipe

ページのトップへ