본문 바로가기
Programing/C#

C#의 XML 파일 생성, 사용

by june._.note 2017. 2. 3.

XML형식의 장단점, 사용법과 관련해서는 따로 인터넷을 공부해봐야겠음.

 

XML을 사용하기 위해서는 'using System.Xml'을 사용해 주어야 함.

 

 

- 생성

: XmlTextWriter 클래스를 생성 : 생성자에 '경로, 인코딩(Encoding.UTF8)'을 입력하면 해당 경로에 XML 생성함.

클래스의 Formatting = 'Formatting.Indented'설정 : 들여쓰기 설정.

WriteStartDocument() & WriteEndDocument() : 문서 작성의 시작 & 끝.

WriteStartElement("[Node 명]") & WriteEndElement() : Node 생성과 끝(<[Node 명]></[Node 명]> : 이걸 작성함.)

WriteString("[내용]") : Node 사이에 내용을 넣어주는 역할.

 

ex)

XmlTextWriter testXml = new XmlTextWriter();

testXml.Formatting = Formatting.Indented;

testXml.WriteStartDocument();

 

testXml.WriteStartElement("root");                     //<root>

testXml.WriteStartElement("deck");                    //<deck>

 

testXml.WriteStartElement("deckCode");             //<deckCode>

testXml.WriteString("AA");    

testXml.WriteEndElement();                             //</deckCode>

 

testXml.WriteStartElement("desc");                    //<desc>

testXml.WriteString("1234");

testXml.WriteEndElement();                             //</desc>

 

testXml.WriteStartElement("fullDesc");               //<fullDesc>

testXml.WriteString("AA-1234");

testXml.WriteEndElement();                            //</fullDesc>

 

testXml.WriteEndElement();                            //</deck>

testXml.WriteEndElement();                            //</root>

 

......

 

testXml.WriteEndDocument();

 

 

- 읽기

: XmlDocument 클래스로 객체를 생성하여 Load([xmlPath])함수를 이용하여 읽어옴.

읽는 방법에도 여러가지가 있는 듯 함.

1. root를 읽어와서 ChildNodes를 통해 XmlNodeList 형식으로 nodeList를 뽑은뒤, loop구문을 통해 뽑아내기

2. XPath 문법과 SelectNodes("[XPath 형식의 String]")를 이용하여 nodeList를 뽑은 뒤 사용 할 수 도 있음.

(XPath String의 형식은 아래 참조 사이트에서 확인 가능)


예)

<root>

<deck>    -----> 1, 2 검색 결과

<deckCode>AA</deckCode>    -----> 3 검색 결과

<desc>1234</desc>

<fullDesc>AA-1234</fullDesc>

</deck>

 

<deck>    -----> 1 검색 결과

....

</deck>

...

</root>

위와같은 XML Data가 있을경우 desc = 1234인 deck의 deckCode를 가져오기 위해서는 

 

SelectNodes의 XPath String을 아래와 같이 작성한다.

 

"//deck[desc='1234']/deckCode"

 

//deck : 모든 노드중 deck Node                                                                           --- 1

[desc = '1234'] : 조건, desc의 텍스트가 1234

-->//deck[desc='1234'] : desc의 텍스트가 1234인 노드를 갖는 deck 노드                --- 2

//deck[desc='1234']/deckCode : 조건에 맞게 검색된 deck노드 하위의 deckCode 노드.     --- 3

 

 

 

참조 :    (XML 장단점) http://kylog.tistory.com/44

(XML 장점) http://okky.kr/article/14307

(XML 읽기, 쓰기) http://shine10e.tistory.com/79

(XML 파일 탐색하기 - XPath 문법) http://funylife.tistory.com/entry/2-XPath의-기본문법을-알아보자