XmlTextWriter による XML 出力の書式設定

XmlTextWriter による XML 出力の書式設定は、複数のプロパティが協力してドキュメントの出力を制御することによって行われます。出力の書式設定のプロパティを次に示します。

  • Formatting
  • IndentChar
  • Indentation
  • QuoteChar

Formatting プロパティの有効な値は NoneIndented であり、None が既定値です。選択された値が None である場合は、IndentChar プロパティと Indentation プロパティは無視され、書式設定は行われません。Formatting プロパティが Indented に設定されている場合、アプリケーションは Indentation プロパティを調べて、階層内の各レベルについて書き込む IndentChars の数を確認します。IndentChars はインデントに使用する文字を指定します。Formatting プロパティが Indented に設定されている場合、Indentation の既定の処理として、階層内の各レベルについて 2 つの IndentChars を書き込みます。IndentChars の既定値は空白です。FormattingIndented に設定されている場合は、Indentation 値と IndentChar 値に応じて子要素がインデントされます。XmlTextWriter によって実行されるインデントは、ノードのタイプに依存します。Indentation プロパティの影響を受けるノードを次に示します。

  • DocumentType
  • Element
  • Comment
  • ProcessingInstruction
  • CDATASection

これ以外のすべてのノード タイプは Indentation プロパティの影響を受けないため、インデントは実行されません。

DTD の内部サブセットでは、インデントも書式設定も行われません。ただし、インデントや書式設定を行うこともでき、それを示すコード例を次に示します。このコード例では、DTD 内部サブセットの書式設定を行います。

String name = "Employees";
String pubid = null;
String sysid = null;
String subset = @"
    <!ELEMENT Employees (Employee)+>
    <!ELEMENT Employee EMPTY>
    <!ATTLIST Employee firstname CDATA #REQUIRED>
    <!ENTITY Company 'Microsoft'>]>
";
XmlTextWriter tw = new XmlTextWriter(Console.Out);
tw.WriteDocType(name, pubid, sysid, subset);

QuoteChar プロパティを使用して、属性値を囲む引用符文字を決定します。有効な文字を次に示します。

  • 一重引用符 (&#39;)
  • 二重引用符 (&#34;)

QuoteChar の既定値は二重引用符 (&#34;) です。

XML フラグメントを書く例を次に示します。Formatting プロパティを Indented に、インデント レベルを 4 に、インデント文字を空白 (既定値) にそれぞれ設定します。

Option Explicit
Option Strict

Imports System
Imports System.IO
Imports System.Xml

Public Class Sample
    
    Public Shared Sub Main()
        'Create a writer to write XML to the console.
        Dim writer As XmlTextWriter = Nothing
        writer = New XmlTextWriter(Console.Out)
        
        'Use indentation for readability.
        writer.Formatting = Formatting.Indented
        writer.Indentation = 4
        
        'Write an element (this one is the root).
        writer.WriteStartElement("book")
        
        'Write the title element.
        writer.WriteStartElement("title")
        writer.WriteString("Pride And Prejudice")
        writer.WriteEndElement()
        
        'Write the close tag for the root element.
        writer.WriteEndElement()
        
        'Write the XML to file and close the writer.
        writer.Close()
    End Sub 'Main 
End Class 'Sample
[C#]
using System;
using System.IO;
using System.Xml;

public class Sample
{
  
  public static void Main()
  {
     //Create a writer to write XML to the console.
     XmlTextWriter writer = null;
     writer = new XmlTextWriter (Console.Out);

     //Use indentation for readability.
     writer.Formatting = Formatting.Indented;
     writer.Indentation = 4;
        
     //Write an element (this one is the root).
     writer.WriteStartElement("book");

     //Write the title element.
     writer.WriteStartElement("title");
     writer.WriteString("Pride And Prejudice");
     writer.WriteEndElement();

     //Write the close tag for the root element.
     writer.WriteEndElement();
             
     //Write the XML to file and close the writer.
     writer.Close();  
  }
}

参照

XmlWriter による XML の書き方 | XmlTextWriter による適切な形式の XML の作成 | XmlTextWriter 内の名前空間機能 | カスタマイズされた XML ライタの作成 | XmlTextWriter クラス | XmlTextWriter メンバ | XmlWriter クラス | XmlWriter クラス