XDocument クラスには、XML 宣言、処理命令、およびコメントを含む、有効な XML ドキュメントに必要な情報が含まれています。
XDocument クラスによって提供される特定の機能が必要な場合にのみ、XDocument オブジェクトを作成する必要があります。 多くの場合、 XElementを直接操作できます。 XElementを直接操作する方が簡単なプログラミング モデルです。
XDocument は XContainerから派生するため、子ノードを含めることができます。 ただし、 XDocument オブジェクトに含めることができる子 XElement ノードは 1 つだけです。 これは、XML ドキュメントにルート要素が 1 つだけ存在できる XML 標準を反映しています。
XDocument のコンポーネント
XDocumentには、次の要素を含めることができます。
- 1 つの XDeclaration オブジェクト。 XDeclaration を使用すると、XML 宣言の関連部分 (XML バージョン、ドキュメントのエンコード、および XML ドキュメントがスタンドアロンかどうか) を指定できます。
- 1 つの XElement オブジェクト。 このオブジェクトは、XML ドキュメントのルート ノードです。
- 任意の数の XProcessingInstruction オブジェクト。 処理命令は、XML を処理するアプリケーションに情報を伝達します。
- 任意の数の XComment オブジェクト。 コメントは、ルート要素の兄弟になります。
- DTD 用の 1 つの XDocumentType。
XDocument をシリアル化するときに、たとえ XDocument.Declaration
がnull
されていても、ライターが Writer.Settings.OmitXmlDeclaration
に false
(既定値)を設定している場合、出力には XML 宣言が含まれます。
既定では、LINQ to XML はバージョンを "1.0" に設定し、エンコードを "utf-8" に設定します。
XDocument なしで XElement を使用する
前述のように、 XElement クラスは LINQ to XML プログラミング インターフェイスのメイン クラスです。 多くの場合、アプリケーションでドキュメントを作成する必要はありません。 XElement クラスを使用すると、次のことができます。
- XML ツリーを作成します。
- 他の XML ツリーを追加します。
- XML ツリーを変更します。
- ファイルを保存します。
XDocument を使用する
XDocumentを構築するには、XElement オブジェクトを構築する場合と同様に、機能構築を使用します。
次の例では、 XDocument オブジェクトとそれに関連付けられている包含オブジェクトを作成します。
XDocument d = new XDocument(
new XComment("This is a comment."),
new XProcessingInstruction("xml-stylesheet",
"href='mystyle.css' title='Compact' type='text/css'"),
new XElement("Pubs",
new XElement("Book",
new XElement("Title", "Artifacts of Roman Civilization"),
new XElement("Author", "Moreno, Jordao")
),
new XElement("Book",
new XElement("Title", "Midieval Tools and Implements"),
new XElement("Author", "Gazit, Inbar")
)
),
new XComment("This is another comment.")
);
d.Declaration = new XDeclaration("1.0", "utf-8", "true");
Console.WriteLine(d);
d.Save("test.xml");
Dim doc As XDocument = <?xml version="1.0" encoding="utf-8"?>
<!--This is a comment.-->
<?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
<Pubs>
<Book>
<Title>Artifacts of Roman Civilization</Title>
<Author>Moreno, Jordao</Author>
</Book>
<Book>
<Title>Midieval Tools and Implements</Title>
<Author>Gazit, Inbar</Author>
</Book>
</Pubs>
<!--This is another comment.-->
doc.Save("test.xml")
この例では、次の出力が test.xmlで生成されます。
<?xml version="1.0" encoding="utf-8"?>
<!--This is a comment.-->
<?xml-stylesheet href='mystyle.css' title='Compact' type='text/css'?>
<Pubs>
<Book>
<Title>Artifacts of Roman Civilization</Title>
<Author>Moreno, Jordao</Author>
</Book>
<Book>
<Title>Midieval Tools and Implements</Title>
<Author>Gazit, Inbar</Author>
</Book>
</Pubs>
<!--This is another comment.-->
こちらも参照ください
.NET