共用方式為


儲存與寫入文件

載入及儲存 XmlDocument 時,儲存的文件與原始文件在下列方面可能不同:

  • 如果在呼叫 PreserveWhitespace 方法之前將 true 屬性設為 Save,則在輸出中會保留文件中的泛空白字元;如果此屬性為 false,則 XmlDocument 會自動縮排輸出。

  • 屬性之間的所有泛空白字元會縮減為單一空格字元。

  • 變更項目之間的泛空白字元。 保留顯著的泛空白字元,但不保留不顯著的泛空白字元。 不過,在儲存文件時,依預設會使用 XmlTextWriterIndenting 模式將輸出整齊列印出來,使其易於讀取。

  • 依預設,會將屬性值周圍的引號字元變更為雙引號。 您可以使用 QuoteChar 上的 XmlTextWriter 屬性,將引號字元設為雙引號或單引號。

  • 依預設,會展開 { 之類的數字字元實體。

  • 不保留在輸入文件中發現的位元組順序標記。 除非您明確建立指定不同編碼的 XML 宣告,否則會將 UCS-2 儲存為 UTF-8。

  • 如果您要將 XmlDocument 寫入檔案或資料流,則寫出的輸出與文件的內容相同。 換言之,唯有當文件中已包含一個 XmlDeclaration 時,才會將其寫出,而且寫出文件時所使用的編碼與宣告節點中指定的編碼相同。

寫入 XmlDeclaration

除了 XmlDocumentXmlDeclarationOuterXml 方法之外,InnerXmlWriteToXmlDocumentSaveWriteContentTo 成員也會建立 XML 宣告。

對於 XmlDocumentOuterXmlInnerXmlSaveWriteTo 方法的 WriteContentTo 屬性,XML 宣告中寫出的編碼取自 XmlDeclaration 節點。 如果不存在 XmlDeclaration 節點,則不會寫出 XmlDeclaration。如果 XmlDeclaration 節點中沒有編碼,則不會在 XML 宣告中寫出編碼。

XmlDocument.SaveXmlDocument.Save 方法始終會寫出 XmlDeclaration。 這些方法從其正寫入的寫入器取得編碼。 換言之,寫入器上的編碼值會覆寫文件上及 XmlDeclaration 中的編碼。 例如,下列程式碼不會將編碼寫入輸出檔案 out.xml 中發現的 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);  

針對 Save 方法,會使用 WriteStartDocument 類別中的 XmlWriter 方法寫出 XML 宣告。 因此,覆寫 WriteStartDocument 方法會變更文件開頭的寫入方式。

針對 OuterXmlWriteToInnerXmlXmlDeclaration 成員,如果未設定 Encoding 屬性,則不會寫出編碼。否則,在 XML 宣告中寫出之編碼與在 Encoding 屬性中發現的編碼相同。

使用 OuterXml 屬性寫入文件內容

OuterXml 屬性是全球資訊網協會 (W3C) XML 文件物件模型 (DOM) 標準的 Microsoft 擴充程式。 OuterXml 屬性可用於取得整個 XML 文件的標記,或僅取得單一節點及其子節點的標記。 OuterXml 會傳回表示給定節點及其所有子節點的標記。

下列程式碼範例顯示如何將整個文件儲存為字串。

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;  

下列程式碼範例顯示如何只儲存文件項目。

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

相反地,如果您需要子節點的內容,則可使用 InnerText 屬性。

另請參閱