c#/기타

[c#] xml document / XML 읽기 쓰기

byH 2022. 5. 2. 10:13
728x90
반응형

 

XML 파일을 읽고 쓰는데는 XmlDocument 를 사용한다.

TreeControl 처럼 Node를 추가하고 그 Node 아래 자식 Node를 추가하는 방식을 사용하는데 

어떤 정보를 담아두고, 해당 정보를 불러와 이용할 때 유용하다.

 

1. Using 추가 

using System.Xml;

 

2. XML 파일 쓰기 

XmlDocument를 선언 후

XmlNode에 를 선언하여 AppendChild 해주고 있다.

 private void button1_Click(object sender, EventArgs e)
        {

            XmlDocument xdoc = new XmlDocument();


            //커피 타입이라는 부모 노드 생성 
            XmlNode root = xdoc.CreateElement("CoffeeType");
            xdoc.AppendChild(root);

            
            //자식 노드 1. 아메리카노 , 가격은 4000원 
            XmlNode coff1 = xdoc.CreateElement("Coffee");

            XmlNode type1 = xdoc.CreateElement("Type");
            type1.InnerText = "Americano";
            coff1.AppendChild(type1);
            XmlNode price1 = xdoc.CreateElement("Price");
            price1.InnerText = "4000";
            coff1.AppendChild(price1);


            //자식 노드 2. 라떼 , 가격은 5000원 
            XmlNode coff2 = xdoc.CreateElement("Coffee");

            XmlNode type2 = xdoc.CreateElement("Type");
            type2.InnerText = "Latte";
            coff2.AppendChild(type2);
            XmlNode price2 = xdoc.CreateElement("Price");
            price2.InnerText = "5000";
            coff2.AppendChild(price2);


            //부모 노드에 자식 노드 추가 
            root.AppendChild(coff1);
            root.AppendChild(coff2);
           



            xdoc.Save(@"C:\Temp\xmltest.xml");
        }

 

xmltest.xml 파일이다

 

 

3. XML 파일 읽기

읽는 건 간단하다 FOREACH 문으로 NODE를 읽어주면 된다. 

   private void button2_Click(object sender, EventArgs e)
        {
            XmlDocument xdoc = new XmlDocument();
            xdoc.Load(@"C:\Temp\xmltest.xml");

            XmlNodeList nodes = xdoc.SelectNodes("/CoffeeType/Coffee");

            foreach(XmlNode coffee in nodes)
            {
                string type = coffee.SelectSingleNode("Type").InnerText;
                string price = coffee.SelectSingleNode("Price").InnerText;

                richTextBox1.AppendText("Type : " + type + " Price : " + price+ "\n");
       
            }
        
        }

 

 

728x90
반응형