Zapisywanie dokumentu
Podczas ładowania i zapisywania zapisanego XmlDocumentdokumentu może się różnić od oryginalnego w następujący sposób:
PreserveWhitespace Jeśli właściwość jest ustawiona na
true
wartość przed Save wywołaną metodą, biały znak w dokumencie zostanie zachowany w danych wyjściowych. Jeśli ta właściwość tofalse
, XmlDocument automatycznie wcięcie danych wyjściowych.Wszystkie białe odstępy między atrybutami są zmniejszane do pojedynczego znaku spacji.
Zmienia się odstęp między elementami. Zachowana jest znaczna biała przestrzeń, a nie ma nieistotnego odstępu. Jednak po zapisaniu dokumentu domyślnie będzie używany XmlTextWriter tryb wcięcia , aby starannie wydrukować dane wyjściowe, aby uczynić go bardziej czytelnym.
Znak cudzysłowu używany wokół wartości atrybutów jest domyślnie zmieniany na podwójny cudzysłów. Możesz użyć QuoteChar właściwości w XmlTextWriter poleceniu , aby ustawić znak cudzysłowu na podwójny cudzysłów lub pojedynczy cudzysłów.
Domyślnie jednostki znaków liczbowych, takie jak
{
, są rozwinięte.Znacznik kolejności bajtów znaleziony w dokumencie wejściowym nie jest zachowywany. UCS-2 jest zapisywany jako UTF-8, chyba że jawnie utworzysz deklarację XML określającą inne kodowanie.
Jeśli chcesz zapisać XmlDocument element w pliku lub strumieniu, zapisane dane wyjściowe są takie same jak zawartość dokumentu. Oznacza to, że element XmlDeclaration jest zapisywany tylko wtedy, gdy istnieje jeden zawarty w dokumencie, a kodowanie używane podczas zapisywania dokumentu jest tym samym kodowaniem podanym w węźle deklaracji.
Pisanie deklaracji Xml
Elementy XmlDocument InnerXmlOuterXmlczłonkowskie , XmlDeclaration i , WriteTooprócz XmlDocument metod Save i WriteContentTo, tworzą deklarację XML.
XmlDocument We właściwościach OuterXml, InnerXmli SaveWriteTometod , i WriteContentTo kodowanie zapisane w deklaracji XML jest pobierane z węzłaXmlDeclaration. Jeśli nie XmlDeclaration ma węzła, XmlDeclaration nie jest zapisywany. Jeśli w węźle XmlDeclaration nie ma kodowania, kodowanie nie jest zapisywane w deklaracji XML.
Metody XmlDocument.Save i XmlDocument.Save zawsze zapisują element XmlDeclaration. Metody te przyjmują kodowanie od składnika zapisywania, do którego jest zapisywany. Oznacza to, że wartość kodowania w składniku zapisywania zastępuje kodowanie w dokumencie i w pliku XmlDeclaration. Na przykład poniższy kod nie zapisuje kodowania w deklaracji XML znalezionej w pliku out.xml
wyjściowym .
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);
W przypadku Save metody deklaracja XML jest zapisywana przy użyciu WriteStartDocument metody w XmlWriter klasie . W związku z tym zastępowanie WriteStartDocument metody zmienia sposób zapisywania początku dokumentu.
XmlDeclaration W przypadku elementów członkowskich OuterXml, WriteToi InnerXml, jeśli Encoding właściwość nie jest ustawiona, nie są zapisywane żadne kodowanie. W przeciwnym razie kodowanie zapisane w deklaracji XML jest takie samo jak kodowanie znalezione we Encoding właściwości .
Pisanie zawartości dokumentu przy użyciu właściwości OuterXml
Właściwość OuterXml to rozszerzenie firmy Microsoft do standardów MODELU DOM (XML Document Object Model) XML (W3C). Właściwość OuterXml służy do pobierania znaczników całego dokumentu XML lub tylko adiustacji pojedynczego węzła i jego węzłów podrzędnych. OuterXml Zwraca znacznik reprezentujący dany węzeł i wszystkie jego węzły podrzędne.
Poniższy przykładowy kod pokazuje, jak zapisać dokument w całości jako ciąg.
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;
Poniższy przykładowy kod pokazuje, jak zapisać tylko 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;
Z kolei można użyć InnerText właściwości , jeśli chcesz, aby zawartość węzłów podrzędnych.