XML ライターの作成
XmlWriter インスタンスは、静的な XmlWriter.Create メソッドを使用して作成されます。
XmlWriter インスタンスは、Create メソッドを使用して作成されます。 XmlWriterSettings クラスは、新しい XmlWriter オブジェクトで有効にする機能のセットを指定するために使用されます。
重要 |
---|
Microsoft .NET Framework には、XmlWriter クラスの具象実装である XmlTextWriter クラスが含まれていますが、.NET Framework Version 2.0 では、Create メソッドを使用して XmlWriter インスタンスを作成する方法を推奨しています。 |
機能は、XmlWriterSettings クラスのプロパティを使用して、有効または無効にされます。 XmlWriterSettings オブジェクトを Create メソッドに渡すことによって、サポートするライター機能を指定します。 Create メソッドと XmlWriterSettings クラスを使用すると、次の利点があります。
作成される XmlWriter オブジェクトでサポートする機能を指定できます。
複数のライター オブジェクトの作成に、XmlWriterSettings オブジェクトを再使用できます。 作成されるライターそれぞれについて、XmlWriterSettings オブジェクトがコピーされ、読み取り専用とマークされます。 XmlWriterSettings インスタンスの設定が変更されても、同じ設定を使用している既存のライターには影響しません。 したがって、同じ機能を持つ複数のライターの作成に、同じ設定を使用できます。 または、XmlWriterSettings インスタンスの設定を変更して、別の機能セットを持つ新しいライターを作成できます。
既存のライターに機能を追加できます。 Create メソッドは別の XmlWriter オブジェクトを受け取ることができます。 基になる XmlWriter オブジェクトが静的な Create メソッドによって作成されたライターである必要はありません。 たとえば、機能を追加する対象として、ユーザー定義のライターまたは XmlTextWriter オブジェクトを指定することができます。
このリリースで XmlWriter クラスに追加されたすべての新機能を最大限に活用します。 静的な Create メソッドによって作成された XmlWriter オブジェクトだけで利用可能な一致チェック機能の向上や XML 1.0 勧告との整合性の向上など、いくつかの機能があります。
XmlWriterSettings オブジェクトが Create メソッドに渡されない場合は、既定の設定が使用されます。 次の表は、XmlWriterSettings クラスの既定の設定の一覧です。
プロパティ |
初期値 |
---|---|
true |
|
false |
|
ConformanceLevel.Document |
|
Encoding.UTF8 |
|
false |
|
2 つのスペース |
|
\r\n (キャリッジ リターン、改行) |
|
NewHandling.Replace |
|
false |
|
false |
例
次の例では、XML ファイルに出力する XmlWriter を作成します。
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = " "
Using writer As XmlWriter = XmlWriter.Create("books.xml", settings)
' Write XML data.
writer.WriteStartElement("book")
writer.WriteElementString("price", "19.95")
writer.WriteEndElement()
writer.Flush()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
{
// Write XML data.
writer.WriteStartElement("book");
writer.WriteElementString("price", "19.95");
writer.WriteEndElement();
writer.Flush();
}