C# XmlWriter를 이용하면 C#에서 XML 데이터를 손쉽게 작성할 수 있습니다. 이를 통해 빠르고 캐시되지 않는 방식으로 XML 스트림이나 파일을 생성할 수 있습니다.
이번 포스팅에서는 예제 중심으로 XmlWriter를 사용하여 C#에서 XML 데이터를 작성하는 방법에 대해 알아보겠습니다.
XmlWriter란?
XmlWriter는 XML 데이터를 생성하기 위한 C#의 클래스입니다. 이 클래스는 XML 데이터를 스트림이나 파일로 생성할 수 있는 빠르고 효율적인 방법을 제공합니다. XmlWriter는 System.Xml 네임스페이스에서 제공되며 사용하기 매우 간단합니다.
XmlReader 에 관한 글은 다음글을 참조 하시면 됩니다.
C# XmlWriter 예제
다음 예제는 간단한 C# XmlWriter를 생성합니다.
using System.Xml;
class Program
{
static void Main()
{
var setting = new XmlWriterSettings()
{
Indent = true,
};
using XmlWriter writer = XmlWriter.Create("data.xml", setting);
writer.WriteStartDocument();
writer.WriteStartElement("value");
writer.WriteValue("HaroStudio");
writer.WriteEndElement();
writer.WriteEndDocument();
Console.WriteLine("XML 문서가 생성되었습니다.");
}
}
우리는 새 XML 문서를 생성합니다. 이 문서에는 XML 선언과 단일 XML 태그가 포함되어 있습니다.
var setting = new XmlWriterSettings()
{
Indent = true,
};
using XmlWriter writer = XmlWriter.Create("data.xml", setting);
XmlWriter는 Create 메서드를 사용하여 생성됩니다. 우리는 문서의 이름과 설정을 메서드에 전달합니다.
writer.WriteStartDocument();
WriteStartDocument 메서드는 새 문서를 시작합니다.
writer.WriteStartElement("value");
writer.WriteValue(HaroStudio);
writer.WriteEndElement();
WriteStartElement 및 WriteEndElement 쌍은 문서에 새 요소를 추가하는 데 사용됩니다. WriteValue는 단일 간단한 유형의 값을 작성합니다.
writer.WriteEndDocument();
WriteEndDocument는 열린 요소나 속성을 닫고 작성기를 시작 상태로 돌려 놓습니다.
출력된 data.xml 은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<value>HaroStudio</value>
C# XmlWriter 예제 II
다음 예제는 두 개의 책이 포함된 XML 파일을 생성합니다.
using System.Xml;
class Program
{
static void Main()
{
var setting = new XmlWriterSettings()
{
Indent = true,
};
using var writer = XmlWriter.Create("books.xml", setting);
writer.WriteStartDocument();
writer.WriteStartElement("bookstore");
writer.WriteStartElement("book");
writer.WriteAttributeString("genre", "Computer");
writer.WriteStartElement("title");
writer.WriteString("XML Developer's Guide");
writer.WriteEndElement();
writer.WriteStartElement("author");
writer.WriteString("Gambardella, Matthew");
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteString("44.99");
writer.WriteEndElement();
writer.WriteEndElement(); // book 끝
writer.WriteStartElement("book");
writer.WriteAttributeString("genre", "Fantasy");
writer.WriteStartElement("title");
writer.WriteString("Midnight Rain");
writer.WriteEndElement();
writer.WriteStartElement("author");
writer.WriteString("Ralls, Kim");
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteString("59.0");
writer.WriteEndElement();
writer.WriteEndElement(); // book 끝
writer.WriteEndDocument();
Console.WriteLine("XML 문서가 생성되었습니다.");
}
}
XML 태그 외에도 WriteAttributeString으로 속성을 생성합니다.
<bookstore>
<book genre='Computer'>
<title>XML Developer's Guide</title>
<author>Gambardella, Matthew</author>
<price>44.99</price>
</book>
<book genre='Fantasy'>
<title>Midnight Rain</title>
<author>Ralls, Kim</author>
<price>59.0</price>
</book>
</bookstore>
C# XmlWriter 예제 III
다음 예제는 제품이 포함된 XML 파일을 생성합니다.
using System.Xml;
class Program
{
static void Main()
{
var 설정 = new XmlWriterSettings()
{
Indent = true,
};
using var writer = XmlWriter.Create("products.xml", 설정);
var 제품목록 = new List<Product>
{
new Product(1, "제품 A", 12.2M),
new Product(2, "제품 B", 11.3M),
new Product(3, "제품 C", 9M),
new Product(4, "제품 D", 5.6M),
new Product(5, "제품 E", 11.7M)
};
writer.WriteStartDocument();
writer.WriteStartElement("products");
foreach (var 제품 in 제품목록)
{
writer.WriteStartElement("product");
writer.WriteStartElement("id");
writer.WriteValue(제품.id);
writer.WriteEndElement();
writer.WriteStartElement("name");
writer.WriteValue(제품.name);
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteValue(제품.price);
writer.WriteEndElement();
writer.WriteEndElement(); // 제품 끝
}
writer.WriteEndElement();
writer.WriteEndDocument();
Console.WriteLine("XML 문서가 생성되었습니다.");
}
record Product(int id, string name, decimal price);
}
C# 레코드 유형을 사용하여 제품 목록을 생성합니다. 목록을 순회하고 개체에서 XML 파일을 생성합니다.
<?xml version="1.0" encoding="utf-8"?>
<products>
<product>
<id>1</id>
<name>제품 A</name>
<price>12.2</price>
</product>
<product>
<id>2</id>
<name>제품 B</name>
<price>11.3</price>
</product>
<product>
<id>3</id>
<name>제품 C</name>
<price>9</price>
</product>
<product>
<id>4</id>
<name>제품 D</name>
<price>5.6</price>
</product>
<product>
<id>5</id>
<name>제품 E</name>
<price>11.7</price>
</product>
</products>
결론
이와 같이 XmlWriter를 사용하면 간단한 XML 데이터를 생성할 수 있습니다. 또한 XmlWriter를 활용하여 XML 요소에 속성을 추가할 수도 있습니다. XmlWriter를 이용하면 C#에서 XML 데이터를 효율적으로 처리할 수 있습니다.