带 XML 声明的序列化

更新:November 2007

本主题说明如何控制序列化是否生成 XML 声明。

XML 声明的生成

使用 XElement.Save 方法或 XDocument.Save 方法序列化为 FileTextWriter 将生成 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>

请参见

概念

序列化 XML 树