使用 XML 宣告進行序列化 (LINQ to XML)

本文說明如何在 C# 或 Visual Basic 中序列化 XML 時,控制是否產生 XML 宣告。

使用 File 方法或 TextWriter 方法序列化為 XElement.SaveXDocument.Save 會產生 XML 宣告。 當您序列化為 XmlWriter 時,寫入器設定 (在 XmlWriterSettings 物件中指定) 會決定是否產生 XML 宣告。

如果您要使用 ToString 方法序列化為字串,所產生的 XML 將不會包含 XML 宣告。

範例:使用 XML 宣告進行序列化

下列範例會建立 XElement、將文件儲存為檔案,然後將檔案列印到主控台:

XElement root = new XElement("Root",
    new XElement("Child", "child content")
);
root.Save("Root.xml");
string str = File.ReadAllText("Root.xml");
Console.WriteLine(str);
Dim root As XElement = <Root>
                           <Child>child content</Child>
                       </Root>
root.Save("Root.xml")
Dim str As String = File.ReadAllText("Root.xml")
Console.WriteLine(str)

這個範例會產生下列輸出:

<?xml version="1.0" encoding="utf-8"?>
<Root>
  <Child>child content</Child>
</Root>

範例:不使用 XML 宣告進行序列化

下列範例顯示如何將 XElement 儲存為 XmlWriter

StringBuilder sb = new StringBuilder();
XmlWriterSettings xws = new XmlWriterSettings();
xws.OmitXmlDeclaration = true;

using (XmlWriter xw = XmlWriter.Create(sb, xws)) {
    XElement root = new XElement("Root",
        new XElement("Child", "child content")
    );
    root.Save(xw);
}
Console.WriteLine(sb.ToString());
Dim sb As StringBuilder = New StringBuilder()
Dim xws As XmlWriterSettings = New XmlWriterSettings()
xws.OmitXmlDeclaration = True

Using xw As XmlWriter = XmlWriter.Create(sb, xws)
    Dim root = <Root>
                   <Child>child content</Child>
               </Root>
    root.Save(xw)
End Using
Console.WriteLine(sb.ToString())

這個範例會產生下列輸出:

<Root><Child>child content</Child></Root>