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.
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
Formattazione dell'output
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 viene eseguita 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 la proprietà IndentChars specificherà quale carattere utilizzare per i rientri. Se la proprietà Formatting è impostata su Indented, per impostazione predefinita Indentation scriverà due IndentChars per ogni livello della gerarchia e il valore predefinito di IndentChars sarà uno spazio. Se la proprietà 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 i seguenti:
DocumentType
Element
Comment
ProcessingInstruction
CDATASection
Tutti gli altri tipi di nodi non sono interessati dalla proprietà Indentation e pertanto su tali nodi non viene eseguito alcun rientro.
Il subset interno della DTD non contiene 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 subset interno della 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 (')
virgoletta doppia (")
Il valore predefinito di QuoteChar è la virgoletta doppia ").
Esempio
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
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();
}
}