Bagikan melalui


Menserialkan dengan deklarasi XML (LINQ ke XML)

Artikel ini menjelaskan cara mengontrol apakah deklarasi XML dihasilkan saat Anda menserialkan XML dalam C# atau Visual Basic.

Melakukan serialisasi ke File atau TextWriter menggunakan XElement.Save metode atau XDocument.Save metode menghasilkan deklarasi XML. Saat Anda menserialkan ke XmlWriter, pengaturan penulis (ditentukan dalam XmlWriterSettings objek) menentukan apakah deklarasi XML dihasilkan.

Jika Anda melakukan serialisasi ke string menggunakan ToString metode, XML yang dihasilkan tidak akan mencantumkan deklarasi XML.

Contoh: Menserialkan dengan deklarasi XML

Contoh berikut membuat XElement, menyimpan dokumen ke file, lalu mencetak file ke konsol:

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)

Contoh ini menghasilkan output berikut:

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

Contoh: Menserialkan tanpa deklarasi XML

Contoh berikut menunjukkan cara menyimpan XElement ke 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())

Contoh ini menghasilkan output berikut:

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