XmlWriter 개체는 XML 데이터를 작성할 때 사용할 수 있는 다양한 Write 메서드를 제공하고 있습니다.
XmlWriter 개체에서 제공하는 Write 메서드의 종류에는 요소 쓰기, 특성 쓰기, 형식화된 데이터 쓰기 등이 있습니다.
XmlWriter 개체를 이용하여 요소를 쓸 때는 WriteStartElement, WriteElementString, WriteNode 메서드를 호출합니다.
WriteStartElement 메서드는 요소의 시작 태그를 쓸 때 사용합니다. 이 메서드를 이용하여 요소를 쓴 다음에는 요소의 끝을 쓰는 WriteEndElement 메서드를 호출해야 합니다.
public void WriteStartElement(string name); public void WriteStartElement(string name, string ns); public void WriteStartElement(string prefix, string name, string ns); public void WriteEndElement();
WriteElementString 메서드는 문자열 값을 갖는 요소를 쓸 때 사용합니다.
public void WriteElementString(string name, string value); public void WriteElementString (string name, string ns, string value); public void WriteElementString (string prefix, string name, string ns, string value);
WriteNode 메서드는 XmlReader 개체 혹은 XPathNavigator 개체를 복사하여 쓰기 작업에 사용합니다.
public void WriteNode(XmlReader reader, bool defattr); //defattr: 기본 특성을 복사 여부 public void WriteNode(XPathNavigator navi, bool defattr);
다음의 예제 코드는 세 가지 방법으로 요소 쓰기를 사용하는 예제입니다. 먼저 “data.xml” 파일을 출력 파일로 설정한 XmlWriter 개체를 생성하여 books 루트 요소를 쓰고 두 개의 자식 요소 book을 쓰기 작업합니다. 첫 번째 book 요소의 자식 요소인 title을 쓸 때는 WriteStartElement 메서드를 이용하였고 두 번째book 요소의 자식 요소인 title을 쓸 때는 WriteElementString 메서드를 이용하였습니다.
그리고 작성한 “data.xml” 파일을 소스 파일로 설정한 XmlReader 개체를 생성하고 Console.Out을 출력 파일로 설정한 XmlWriter 개체를 생성한 후에XmlReader 개체를 이용하여 데이터를 복사하여 콘솔 화면에 출력할 때 WriteNode 메서드를 이용하였습니다.
using System; using System.Xml; namespace 예제_2._2_XmlWriter_개체로_요소_쓰기1 { class Program { static void Main(string[] args) { XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; XmlWriter writer = XmlWriter.Create("data.xml", settings); writer.WriteComment("XmlWriter 개체로 요소 쓰기"); writer.WriteStartElement("books"); //루트 요소 쓰기 writer.WriteStartElement("book");//book 요소 쓰기 writer.WriteStartElement("title");//title 요소 쓰기 writer.WriteName("XML.NET"); writer.WriteEndElement();//title 요소 닫기 writer.WriteStartElement("가격");//가격 요소 쓰기 writer.WriteValue(12000); writer.WriteEndElement();//가격 요소 닫기 writer.WriteEndElement();//book 요소 닫기 writer.WriteStartElement("book");//book 요소 쓰기 writer.WriteElementString("title","ADO.NET");//title 요소와 값 쓰기 writer.WriteStartElement("가격");//가격 요소 쓰기 writer.WriteValue(15000); writer.WriteEndElement();//가격 요소 닫기 writer.WriteEndElement();//book 요소 닫기 writer.WriteEndElement();//루트 요소 닫기 writer.Close(); //XmlReader 개체 생성 XmlReader xreader = XmlReader.Create("data.xml"); //콘솔 출력으로 하는 XmlWriter 개체 생성 XmlWriter xwriter = XmlWriter.Create(Console.Out); //xreader 개체로 읽어온 데이터를 xwriter 개체에 복사 xwriter.WriteNode(xreader, false); xwriter.Close(); xreader.Close(); } } }
다음은 실행했을 때 만들어지는 “data.xml” 파일의 내용입니다.
<?xml version="1.0" encoding="utf-8"?> <!--XmlWriter 개체로 요소 쓰기--> <books> <book> <title>XML.NET</title> <가격>12000</가격> </book> <book> <title>ADO.NET</title> <가격>15000</가격> </book> </books>