Freigeben über


Speichern und Ausgeben eines Dokuments

Ein geladenes und dann gespeichertes XmlDocument kann in den folgenden Punkten vom Original abweichen:

  • Wenn die PreserveWhitespace-Eigenschaft vor dem Aufruf der true-Methode auf Save festgelegt wurde, bleibt im Dokument enthaltener Leerraum in der Ausgabe erhalten. Wenn diese Eigenschaft false ist, wird die Ausgabe automatisch von XmlDocument eingerückt.

  • Der gesamte Leerraum zwischen Attributen wird zu einem einzigen Leerzeichen zusammengefasst.

  • Leerraum zwischen Elementen wird verändert. Signifikanter Leerraum bleibt im Gegensatz zu nicht signifikantem Leerraum erhalten. Beim Speichern des Dokuments wird allerdings standardmäßig der besseren Lesbarkeit wegen der Indenting-Modus von XmlTextWriter verwendet.

  • Einfache Anführungszeichen für Attributwerte werden standardmäßig in doppelte Anführungszeichen umgewandelt. Das Anführungszeichen kann mit der QuoteChar-Eigenschaft des XmlTextWriter als einfaches oder doppeltes Anführungszeichen festgelegt werden.

  • Numerische Zeichenentitäten wie { werden standardmäßig erweitert.

  • Die Bytereihenfolgenmarkierung im Ausgangsdokument bleibt nicht erhalten. UCS-2 wird als UTF-8 gespeichert, wenn keine XML-Deklaration erstellt wird, die eine andere Codierung angibt.

  • Wenn das XmlDocument als Datei oder als Stream ausgegeben wird, entspricht die Ausgabe dem Inhalt des Dokuments. Eine XmlDeclaration wird also nur dann ausgegeben, wenn eine solche im Dokument vorhanden ist, und die für die Ausgabe verwendete Codierung entspricht der im Deklarationsknoten angegebenen Codierung.

Schreiben einer "XmlDeclaration"

Außer der XmlDocument-Methode und der XmlDeclaration-Methode von OuterXml erstellen die Methoden InnerXml, WriteTo und XmlDocument von Save und WriteContentTo eine XML-Deklaration.

Bei der XmlDocument-Eigenschaft und der OuterXml-Eigenschaft von InnerXml und den Methoden Save, WriteTo und WriteContentTo wird die in der XML-Deklaration ausgegebene Codierung dem XmlDeclaration-Knoten entnommen. Wenn kein XmlDeclaration-Knoten vorhanden ist, wird keine XmlDeclaration ausgegeben. Wenn der XmlDeclaration-Knoten keine Codierung enthält, wird in der XML-Deklaration keine Codierung ausgegeben.

Die XmlDocument.Save-Methode und die XmlDocument.Save-Methode schreiben immer eine XmlDeclaration. Diese Methoden übernehmen die Codierung des Writers, in den sie schreiben. Der Codierungswert des Writers überschreibt also die Codierung im Dokument und in der XmlDeclaration. Bei dem folgenden Codebeispiel wird z. B. keine Codierung innerhalb der XML-Deklaration in die Ausgabedatei out.xml geschrieben.

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

Bei der Save-Methode wird die XML-Deklaration mit der WriteStartDocument-Methode der XmlWriter-Klasse geschrieben. Ein Überschreiben der WriteStartDocument-Methode ändert daher die Ausgabe des Dokumentanfangs.

Bei den Membern XmlDeclaration, OuterXml und WriteTo von InnerXml wird keine Codierung geschrieben, wenn die Encoding-Eigenschaft nicht festgelegt ist. Andernfalls entspricht die in der XML-Deklaration ausgegebenen Codierung der in der Encoding-Eigenschaft angegebenen Codierung.

Schreiben des Dokumentinhalts mit der "OuterXml"-Eigenschaft

Die OuterXml-Eigenschaft ist eine Erweiterung von Microsoft des XML-DOM-Standards (Document Object Model) des W3C (Word Wide Web Consortium). Die OuterXml-Eigenschaft wird zum Abrufen des Markups des ganzen XML-Dokuments oder eines Knotens und seiner untergeordneten Knoten verwendet. OuterXml gibt das Markup zurück, das diesen Knoten und alle ihm untergeordneten Knoten darstellt.

Im folgenden Codebeispiel wird ein Dokument vollständig als Zeichenfolge gespeichert.

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;  

Im folgenden Codebeispiel wird nur das Dokument-Element gespeichert.

' 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;  

Sie können dagegen die InnerText-Eigenschaft zum Speichern des Inhalts der untergeordneten Knoten verwenden.

Siehe auch