Condividi tramite


Salvataggio e scrittura di un documento

Quando si carica e si salva un XmlDocument, il documento salvato potrebbe essere diverso dall'originale nei seguenti modi:

  • Se la proprietà PreserveWhitespace è impostata su true prima della chiamata al metodo Save, gli spazi vuoti nel documento verranno mantenuti nell'output. Se invece la proprietà è false, XmlDocument produrrà il rientro automatico dell'output.

  • Tutti gli spazi vuoti tra gli attributi vengono ridotti a un singolo carattere di spazio.

  • Lo spazio vuoto tra gli elementi viene modificato. I caratteri spazio vuoto significativi vengono mantenuti, a differenza di quelli non significativi. Tuttavia, quando il documento viene salvato, per impostazione predefinita utilizzerà la modalità Rientri del tipo XmlTextWriter per stampare accuratamente l'output in modo che sia più leggibile.

  • Il carattere virgoletta utilizzato intorno ai valori degli attributi viene modificato in virgolette doppie per impostazione predefinita. È possibile utilizzare la proprietà QuoteChar su XmlTextWriter per impostare il carattere virgoletta su virgolette doppie o virgoletta singola.

  • Per impostazione predefinita, le entità di caratteri numerici come { vengono espanse.

  • Il contrassegno dell'ordine dei byte trovato nel documento di input non viene mantenuto. Il formato UCS-2 viene salvato nel formato UTF-8, a meno che non si crei esplicitamente una dichiarazione XML che specifichi una codifica diversa.

  • Se si vuole riportare un XmlDocument in un file o in un flusso, l'output riportato sarà uguale al contenuto del documento, il che significa che l'oggetto XmlDeclaration viene riportato solo se è contenuto nel documento e la codifica utilizzata per riportare il documento è uguale alla codifica specificata nel nodo di dichiarazione.

Scrittura di una XmlDeclaration

I membri XmlDocument e XmlDeclaration delle proprietà OuterXml, InnerXml e WriteTo, oltre ai metodi XmlDocument di Save e WriteContentTo, consentono di creare una dichiarazione XML.

Per le proprietà OuterXml e InnerXml di XmlDocument e i metodi Save, WriteTo e WriteContentTo, la codifica riportata nella dichiarazione XML deriva dal nodo XmlDeclaration. Se non vi è un nodo XmlDeclaration, la XmlDeclaration non viene riportata. Se non vi è una codifica nel nodo XmlDeclaration, la codifica non viene riportata nella dichiarazione XML.

I metodi XmlDocument.Save e XmlDocument.Save riportano sempre una XmlDeclaration. Questi metodi prendono la codifica dal writer sul quale stanno scrivendo. Vale a dire che il valore di codifica nel writer sostituisce la codifica nel documento e nell'oggetto XmlDeclaration. Il codice seguente, ad esempio, non scrive una codifica nella dichiarazione XML trovata nel file di output out.xml.

Dim doc As New XmlDocument()
Dim tw As XmlTextWriter = New XmlTextWriter("out.xml", Nothing)
doc.Load("text.xml")
doc.Save(tw)
XmlDocument doc = new XmlDocument();
XmlTextWriter tw = new XmlTextWriter("out.xml", null);
doc.Load("text.xml");
doc.Save(tw);

Per il metodo Save la dichiarazione XML viene riportata utilizzando il metodo WriteStartDocument nella classe XmlWriter. Per questo motivo, sovrascrivendo il metodo WriteStartDocument si modifica il modo in cui viene scritto l'inizio del documento.

Per i membri XmlDeclaration delle proprietà OuterXml e InnerXml e del metodo WriteTo, se non è impostata la proprietà Encoding, non viene riportata alcuna codifica. In caso contrario, la codifica scritta nella dichiarazione XML sarà uguale alla codifica trovata nella proprietà Encoding.

Scrittura del contenuto del documento tramite la proprietà OuterXml

La proprietà OuterXml è un'estensione Microsoft degli standard del modello DOM (Document Object Model) XML del World Wide Web Consortium (W3C). ‎La proprietà OuterXml viene utilizzata per ottenere il markup dell'intero documento XML o solo il markup di un singolo nodo e dei relativi nodi figlio. OuterXml restituisce il markup che rappresenta il nodo specificato e tutti i relativi nodi figlio.

Nell'esempio di codice seguente viene illustrato il salvataggio di un intero documento come stringa.

Dim mydoc As New XmlDocument()
' Perform application needs here, like mydoc.Load("myfile");
' Now save the entire document to a string variable called "xml".
Dim xml As String = mydoc.OuterXml
XmlDocument mydoc = new XmlDocument();
// Perform application needs here, like mydoc.Load("myfile");
// Now save the entire document to a string variable called "xml".
string xml = mydoc.OuterXml;

Nell'esempio di codice seguente viene illustrato il salvataggio del solo elemento del documento.

' For the content of the Document Element only.
Dim xml As String = mydoc.DocumentElement.OuterXml
// For the content of the Document Element only.
string xml = mydoc.DocumentElement.OuterXml;

Al contrario, se si desidera il contenuto dei nodi figlio, è possibile utilizzare la proprietà InnerText.

Vedere anche

Concetti

Modello DOM (Document Object Model) XML