Ukládání a zápis dokumentu

Při načítání a ukládání XmlDocumentse uložený dokument může lišit od originálu následujícími způsoby:

  • PreserveWhitespace Pokud je vlastnost nastavena před true zavolání Save metody, prázdné znaky v dokumentu se zachovají ve výstupu; pokud je falsetato vlastnost , XmlDocument automaticky odsadí výstup.

  • Všechny prázdné znaky mezi atributy se zmenší na jeden znak mezery.

  • Změní se prázdné znaky mezi prvky. Významné prázdné znaky se zachovají a nevýznamné prázdné znaky nejsou. Když ale dokument uložíte, použije XmlTextWriterrežim odsazení ve výchozím nastavení k přehlednějšímu tisku výstupu, aby byl čitelnější.

  • Znak uvozovky použitý kolem hodnot atributů se ve výchozím nastavení změní na dvojitou uvozovku. Můžete použít vlastnost QuoteChar na XmlTextWriter k nastavení znaku uvozovky na dvojitou nebo jednoduchou.

  • Standardně se číselné znakové entity, jako {, rozbalí.

  • Značka pořadí bajtů nalezená ve vstupním dokumentu se nezachová. UCS-2 se uloží jako UTF-8, pokud explicitně nevytvoříte deklaraci XML, která určuje jiné kódování.

  • Pokud chcete zapisovat XmlDocument do souboru nebo datového proudu, výstup je stejný jako obsah dokumentu. To znamená, že XmlDeclaration je napsán pouze v případě, že je obsažen v dokumentu, a kódování použité při zápisu dokumentu je stejné, jako je uvedeno v uzlu deklarace.

Zápis XmlDeclaration

XmlDocument, XmlDeclaration a OuterXml, stejně jako metody XmlDocument ze Save a WriteContentTo, vytvářejí XML deklaraci.

Pro vlastnosti OuterXml, InnerXml, Save a WriteTo a pro metody WriteContentTo, je kódování uvedené v deklaraci XML převzato z uzlu XmlDeclaration. Pokud neexistuje žádný XmlDeclaration uzel, XmlDeclaration nezapíše se. Pokud není v XmlDeclaration uzlu žádné kódování, kódování není zapsáno v deklaraci XML.

Metody XmlDocument.Save a XmlDocument.Save vždy zapisují XmlDeclaration. Tyto metody převezmou kódování od zapisovače, do kterého právě zapisují. To znamená, že hodnota kódování na zapisovateli přepisuje kódování v dokumentu a v XmlDeclaration. Například následující kód nezapisuje kódování v deklaraci XML nalezené ve výstupním souboru 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);

Pro metodu Save je deklarace XML zapsána pomocí WriteStartDocument metody ve XmlWriter třídě. Proto přepsání WriteStartDocument metody změní způsob zápisu začátku dokumentu.

XmlDeclaration Pro členy OuterXml, WriteToa InnerXml, pokud Encoding vlastnost není nastavena, není zapsáno žádné kódování. V opačném případě je kódování napsané v deklaraci XML stejné jako kódování nalezené ve Encoding vlastnosti.

Zápis obsahu dokumentu pomocí vlastnosti OuterXml

Vlastnost OuterXml je rozšíření společnosti Microsoft na standardy XML Document Object Model (DOM) od World Wide Web Consortium (W3C). Tato OuterXml vlastnost slouží k získání značek celého dokumentu XML nebo pouze značek jednoho uzlu a jeho podřízených uzlů. OuterXml vrátí značku představující daný uzel a všechny jeho podřízené uzly.

Následující ukázka kódu ukazuje, jak uložit dokument celý jako řetězec.

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;

Následující ukázka kódu ukazuje, jak uložit pouze element dokumentu.

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

Naproti tomu můžete použít vlastnost InnerText, pokud chcete obsah podřízených uzlů.

Viz také