XML 선언을 사용하여 직렬화(LINQ to XML)

이 문서에서는 C# 또는 Visual Basic에서 XML을 직렬화할 때 XML 선언이 생성되는지 여부를 제어하는 방법을 설명합니다.

File 메서드 또는 TextWriter 메서드를 사용하여 XElement.Save 또는 XDocument.Save로 serialize하면 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 선언 없이 직렬화

다음 예제에서는 XElementXmlWriter에 저장하는 방법을 보여 줍니다.

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>