프로그래밍 기술/XML.NET

[XML.NET] 10. XmlWriter 개체로 XML 데이터 작성(요소 쓰기)

언제나휴일 2016. 4. 18. 12:27
반응형

XmlWriter 개체로 XML 데이터 작성

 

 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 메서드를 이용하였습니다.

 

 

Program.cs


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 xreader = XmlReader.Create("data.xml"); //XmlReader 개체 생성

     XmlWriter xwriter = XmlWriter.Create(Console.Out); //콘솔 출력 스트림으로 XmlWriter 개체 생성

     xwriter.WriteNode(xreader, false); //xreader 개체로 읽어온 데이터를 xwriter 개체에 복사

     xwriter.Close();

     xreader.Close();

}

[소스] XmlWriter 개체로 요소 쓰기 예제 코드

 

<?xml version="1.0" encoding="utf-8"?>

<!--XmlWriter 개체로 요소 쓰기-->

<books>

  <book>

    <title>XML.NET</title>

    <가격>12000</가격>

  </book>

  <book>

    <title>ADO.NET</title>

    <가격>15000</가격>

  </book>

</books>

[문서XmlWriter 개체로 요소 쓰기 예제를 실행했을 때 만들어지는 "data.xml" 파일 내용

 

XmlWriter 개체로 요소 쓰기 예제를 실행했을 때


[그림]실행 화면

반응형