Serialiseren met een XML-declaratie (LINQ naar XML)

In dit artikel wordt beschreven hoe u bepaalt of een XML-declaratie wordt gegenereerd wanneer u XML in C# of Visual Basic serialiseert.

Serialiseren naar een File of een TextWriter met behulp van de XElement.Save methode of de XDocument.Save methode genereert een XML-declaratie. Wanneer u serialiseert naar een XmlWriterobject, bepalen de schrijverinstellingen (opgegeven in een XmlWriterSettings object) of er een XML-declaratie wordt gegenereerd.

Als u een tekenreeks serialiseert met behulp van de ToString methode, bevat de resulterende XML-declaratie geen XML-declaratie.

Voorbeeld: Serialiseren met een XML-declaratie

In het volgende voorbeeld wordt een XElementbestand gemaakt, wordt het document opgeslagen in een bestand en wordt het bestand vervolgens afgedrukt naar de console:

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)

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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

Voorbeeld: Serialiseren zonder XML-declaratie

In het volgende voorbeeld ziet u hoe u een XElement bestand opslaat in een 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())

In dit voorbeeld wordt de volgende uitvoer gegenereerd:

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