Delen via


Een document opslaan en schrijven

Wanneer u een XmlDocumentdocument laadt en opslaat, kan het opgeslagen document op de volgende manieren verschillen van het origineel:

  • Als de eigenschap is ingesteld true voordat de Save PreserveWhitespace methode wordt aangeroepen, blijft witruimte in het document behouden in de uitvoer. Als deze eigenschap isfalse, XmlDocument wordt de uitvoer automatisch ingesprongen.

  • Alle witruimte tussen kenmerken wordt beperkt tot één spatieteken.

  • De witruimte tussen elementen wordt gewijzigd. Aanzienlijke witruimte blijft behouden en onbelangrijke witruimte is dat niet. Maar wanneer het document wordt opgeslagen, wordt de XmlTextWriter inspringingsmodus standaard gebruikt om de uitvoer netjes af te drukken om het beter leesbaar te maken.

  • Het aanhalingsteken dat wordt gebruikt rond kenmerkwaarden, wordt standaard gewijzigd in dubbele aanhalingstekens. U kunt de QuoteChar eigenschap on XmlTextWriter gebruiken om het aanhalingsteken in te stellen op dubbele aanhalingstekens of enkele aanhalingstekens.

  • Numerieke tekenentiteiten worden { standaard uitgevouwen.

  • De bytevolgordemarkering in het invoerdocument blijft niet behouden. UCS-2 wordt opgeslagen als UTF-8, tenzij u expliciet een XML-declaratie maakt die een andere codering aangeeft.

  • Als u de XmlDocument uitvoer naar een bestand of stream wilt wegschrijven, is de uitvoer hetzelfde als de inhoud van het document. Dat wil gezegd: het XmlDeclaration wordt alleen geschreven als er een in het document is opgenomen en de codering die wordt gebruikt bij het schrijven van het document, is dezelfde codering die is opgegeven in het declaratieknooppunt.

Een XmlDeclaration schrijven

De XmlDocument en XmlDeclaration leden van OuterXml, InnerXmlen, naast WriteTode XmlDocument methoden van Save en WriteContentTo, maken een XML-declaratie.

Voor de XmlDocument eigenschappen vanOuterXml, InnerXmlen de SaveWriteTo, en WriteContentTo methoden, wordt de codering die in de XML-declaratie is geschreven, uit het XmlDeclaration knooppunt genomen. Als er geen XmlDeclaration knooppunt is, XmlDeclaration wordt deze niet weggeschreven. Als het knooppunt geen codering XmlDeclaration bevat, wordt codering niet weggeschreven in de XML-declaratie.

De XmlDocument.Save en XmlDocument.Save methoden schrijven altijd een XmlDeclaration. Deze methoden gebruiken de codering van de schrijver waarnaar het schrijft. Dat wil gezegd, de coderingswaarde op de schrijver overschrijft de codering van het document en in de XmlDeclaration. De volgende code schrijft bijvoorbeeld geen codering in de XML-declaratie die in het uitvoerbestand out.xmlis gevonden.

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

Voor de Save methode wordt de XML-declaratie geschreven met behulp van de WriteStartDocument methode in de XmlWriter klasse. Daarom verandert het overschrijven van de WriteStartDocument methode hoe het begin van het document wordt geschreven.

Voor de XmlDeclaration leden van OuterXml, WriteToen InnerXml, als de Encoding eigenschap niet is ingesteld, wordt er geen codering weggeschreven. Anders is de codering die in de XML-declaratie is geschreven, hetzelfde als de codering die in de Encoding eigenschap is gevonden.

Documentinhoud schrijven met behulp van de eigenschap OuterXml

De OuterXml eigenschap is een Microsoft-extensie voor de W3C-standaarden (World Wide Web Consortium) XML Document Object Model (DOM). De OuterXml eigenschap wordt gebruikt om de opmaak van het hele XML-document op te halen, of alleen de markeringen van één knooppunt en de onderliggende knooppunten. OuterXml retourneert de markeringen die het opgegeven knooppunt en alle onderliggende knooppunten vertegenwoordigen.

In het volgende codevoorbeeld ziet u hoe u een document in zijn geheel als een tekenreeks opslaat.

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;  

In het volgende codevoorbeeld ziet u hoe u alleen het documentelement opslaat.

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

U kunt de InnerText eigenschap daarentegen gebruiken als u de inhoud van onderliggende knooppunten wilt.

Zie ook