Formattazione dell'output XML con XmlTextWriter

La formattazione dell'output XML con XmlTextWriter è composta da numerose proprietà che concorrono al controllo dell'output di un documento. Le proprietà di formattazione sono:

  • Formatting
  • IndentChar
  • Indentation
  • QuoteChar

I valori validi della proprietà Formatting sono None e Indented, dove None è il valore predefinito. Quando None è il valore selezionato, le proprietà IndentChar e Indentation vengono ignorate e non si verifica alcuna formattazione. Se la proprietà Formatting è impostata su Indented, verrà utilizzata la proprietà Indentation dall'applicazione, per vedere quanti IndentChars scrivere per ogni livello della gerarchia, quindi IndentChars specificherà quale carattere utilizzare per i rientri. Se la proprietà Formatting è impostata su Indented, per impostazione predefinita Indentation scriverà 2 IndentChars per ogni livello della gerarchia e il valore predefinito di IndentChars sarà uno spazio. Se Formatting è impostata su Indented, gli elementi figlio saranno rientrati in base ai valori di Indentation e IndentChar. Il rientro eseguito da XmlTextWriter dipende dal tipo di nodo. I nodi interessati dalla proprietà Indentation sono:

  • DocumentType
  • Element
  • Comment
  • ProcessingInstruction
  • CDATASection

Tutti gli altri tipi di nodi non sono interessati dalla proprietà Indentation e su di essi non viene quindi eseguito alcun rientro.

Il sottoinsieme interno del DTD non ha rientri né formattazione. È tuttavia possibile ottenere sia gli uni che l'altra come mostrato nel codice di esempio riportato qui di seguito, nel quale viene illustrata la formattazione del sottoinsieme interno del 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);

La proprietà QuoteChar consente di determinare il carattere da utilizzare per racchiudere fra virgolette i valori degli attributi. I valori validi sono:

  • virgoletta singola (&#39;)
  • virgoletta doppia (&#34;)

Il valore predefinito di QuoteChar è la virgoletta doppia (&#34;).

Nell'esempio seguente viene illustrato come scrivere un frammento XML, impostare la proprietà Formatting su Indented, con un livello di rientro di 4 e un carattere di spazio, l'impostazione predefinita, per il rientro.

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();  
  }
}

Vedere anche

Scrittura dell'XML con XmlWriter | Creazione di XML in formato corretto con XmlTextWriter | Funzioni dello spazio dei nomi all'interno di XmlTextWriter | Creazione di un writer XML personalizzato | Classe XmlTextWriter | Membri XmlTextWriter | Classe XmlWriter | Classe XmlWriter