XML 작성기 만들기
XmlWriter 인스턴스는 정적 XmlWriter.Create 메서드를 사용하여 만듭니다.
XmlWriter 개체는 Create 메서드를 사용하여 만듭니다. XmlWriterSettings 클래스를 사용하여 새 XmlWriter 개체에서 사용할 기능 집합을 지정할 수 있습니다.
중요 |
---|
Microsoft .NET Framework에 XmlWriter 클래스의 구체적 구현인 XmlTextWriter 클래스가 포함되어 있지만 .NET Framework 버전 2.0에서는 Create 메서드를 사용하여 XmlWriter 인스턴스를 만드는 것이 좋습니다. |
XmlWriterSettings 클래스의 속성을 사용하여 기능을 활성화하거나 비활성화할 수 있습니다. XmlWriterSettings 개체를 Create 메서드에 전달하여 지원할 작성기 기능을 지정합니다. Create 메서드와 XmlWriterSettings 클래스를 사용하면 다음과 같은 이점을 얻을 수 있습니다.
만들어진 XmlWriter 개체에서 지원할 기능을 지정할 수 있습니다.
XmlWriterSettings 개체를 다시 사용하여 여러 작성기 개체를 만들 수 있습니다. XmlWriterSettings 개체가 복사되고 생성된 각 작성기에 대해 읽기 전용으로 표시됩니다. XmlWriterSettings 인스턴스에서 설정을 변경해도 설정이 같은 기존 작성기에는 영향을 주지 않습니다. 그러므로 같은 설정을 사용하면 같은 기능을 갖춘 여러 작성기를 만들 수 있습니다. 또는 XmlWriterSettings 인스턴스에서 설정을 수정하고 다른 기능 집합이 포함된 새 작성기를 만들 수 있습니다.
기존 작성기에 기능을 추가할 수 있습니다. Create 메서드는 다른 XmlWriter 개체를 허용할 수 있습니다. 기본 XmlWriter 개체는 정적 Create 메서드로 만든 작성기가 아니어도 됩니다. 예를 들어, 기능을 추가할 XmlTextWriter 개체 또는 사용자 정의 작성기를 지정할 수 있습니다.
이 릴리스에서 XmlWriter 클래스에 추가된 새로운 기능을 모두 최대한 활용하십시오. 향상된 규칙 검사 기능이나 XML 1.0 권장 사항 준수 등의 일부 기능은 정적 Create 메서드로 만든 XmlWriter 개체에서만 사용할 수 있습니다.
XmlWriterSettings 개체를 Create 메서드에 전달하지 않으면 기본 작성기 설정이 사용됩니다. 다음 표에서는 XmlWriterSettings 클래스의 기본 설정을 보여 줍니다.
속성 |
초기 값 |
---|---|
true |
|
false |
|
ConformanceLevel.Document |
|
Encoding.UTF8 |
|
false |
|
공백 두 개 |
|
\r\n(캐리지 리턴, 줄 바꿈) |
|
NewHandling.Replace |
|
false |
|
false |
예제
다음 예제에서는 XML 파일로 출력되는 XmlWriter를 만듭니다.
Dim settings As New XmlWriterSettings()
settings.Indent = True
settings.IndentChars = " "
Using writer As XmlWriter = XmlWriter.Create("books.xml", settings)
' Write XML data.
writer.WriteStartElement("book")
writer.WriteElementString("price", "19.95")
writer.WriteEndElement()
writer.Flush()
End Using
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
using (XmlWriter writer = XmlWriter.Create("books.xml", settings))
{
// Write XML data.
writer.WriteStartElement("book");
writer.WriteElementString("price", "19.95");
writer.WriteEndElement();
writer.Flush();
}