[C# 강좌 - 31] XML 다루기 (2) - Writer


Study/C#  2012. 10. 4. 09:00

안녕하세요. 명월입니다.


이전 포스팅에서 XmlNodeReader 와 XmlTextReader 클래스로 XML을 읽어 들일 수 있는 방법이 두가지라고 소개하였습니다. 그의 비해 Writer는 XmlTextWriter 로 생성하고 XMLDocument 로 수정을 할 수 있습니다.

그럼 MSDN을 살펴 보겠습니다.

MSDN - XmlTextWriter 바로가기

 


바로가기 - XmlDocument 바로가기

 


역시 이런 설명보다는 하나의 예제가 이해가 빠르니 먼저 XML 를 생성하고 수정을 해보겠습니다.

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;

namespace Blog20121003_0_
{
    class Program
    {
        static void Main(string[] args)
        {
            new Program();
        }
        public Program()
        {
            XmlTextWriterTest();
            Console.WriteLine("Press any key...");
            Console.ReadLine();
        }
        public void XmlTextWriterTest() 
        {
            XmlTextWriter XTW = new XmlTextWriter("XmlTextWriterTest.xml", Encoding.Unicode);
            XTW.Formatting = Formatting.Indented;
            XTW.WriteStartDocument();// 시작
            XTW.WriteDocType("Test", null, "test.dtd", null);
            XTW.WriteStartElement("Tistory");
            XTW.WriteStartElement("명월블로그");
            XTW.WriteAttributeString("강좌", "C#");
            XTW.WriteElementString("작성일", "20121003");
            XTW.WriteElementString("강좌명", "XML 통신");
            XTW.WriteElementString("작성자", "명월");
            XTW.WriteEndElement();
            XTW.WriteEndElement();
            XTW.WriteEndDocument();//끝
            XTW.Flush();
            XTW.Close();
            Console.WriteLine("XmlTextWriterTest 작성완료");
        }
    }
}

 


>XML이 작성되었습니다. 그럼 작성된 XML의 작성일을 20121004 로 바꾸어 보겠습니다.

먼저 작성일의 노드를 수정을 하려면 작성일까지 검색을 해야 합니다.

검색은 XmlNode를 통해서 검색을 시작합니다.


MSDN - XMLNode 바로가기

 


예제는 검색부터 수정까지 한꺼번에 설명하겠습니다.

public void XMLDocumentTest()
{
    XmlDocument XD = new XmlDocument();
    XD.Load("XmlTextWriterTest.xml");

    XmlNode Tistory = XD.DocumentElement;
    XmlNode Blog = Tistory.FirstChild;
    XmlNodeList XNL = Blog.ChildNodes;
    foreach (XmlNode XN in XNL)
    {
        if (XN.LocalName.Equals("작성일"))
        {
            XN.InnerXml = "20121004";
        }
    }
    XD.Save("XmlTextWriterTest.xml");
}


(전체소스가 아니고 부분 소스입니다.)


위 소스를 보면 XMLNode를 검색하여 작성일 Node까지 찾아가는 모습이 보입니다.

거기에서 InnerXml, 즉 안에 Text값을 변경하고 다시 같은 이름으로 저장하는 소스입니다.

결과화면으로 보시겠습니다.

작성일이 변경 되었습니다.

참조 소스 : Blog20121003[0].zip