본문 바로가기
C#

C# - Xml파일 제어, Xml파싱

by 개발 그리고 게발 2021. 7. 8.
728x90

Xml파일이나 텍스트가 있을 경우 Xml내부에 있는 값을 가져오기 위해서는 다음과 같은 방법을 쓸 수 있습니다.

 

Xml파일 확인케이스

- Xml 속성값 가져오기

- 하위노드 리스트 가져오기

- 노드의 값 가져오기

- 추가된 노드의 하위값들 가져오기

- 중복노드의 값들 가져오기

 

 

예제 Xml파일

<?xml version="1.0" encoding="utf-8" ?>
<category id="category1">
  <name>VS code</name>
  <type>Xml Sample Document</type>
  <version>2019</version>
  <food store="Gimchun">
    <name>DDeok guk</name>
    <name>Ramyeon</name>
    <kimbop>
      <add menu="chamchi"></add>
      <add menu="kimchi"></add>
      <add menu="egg"></add>
      <add menu="spicy"></add>
    </kimbop>
  </food>
  <shortname>T1</shortname>
  <shortname>T2</shortname>
  <shortname>T3</shortname>
</category>

 

 

Xml파일 가져오기

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("XmlSample.xml");

 

하위노드 리스트 가져오기

XmlNodeList ctg_node_lst = ctg_node.ChildNodes;

 

Xml속성 가져오기

XmlNode ctg_node = xmlDoc.SelectSingleNode("category");

// 결과값 : category1
string ctg_id = ctg_node.Attributes["id"].Value;

 

노드의 값 가져오기

XmlNode name_node = xmlDoc.SelectSingleNode("category/name");

// 결과값 : VS code
string name_value = name_node.InnerText;
string name_value2 = name_node.ChildNodes[0].InnerText;

 

추가된 노드의 하위값들 가져오기

XmlNode kimbop_node = xmlDoc.SelectSingleNode("category/food/kimbop");

// 결과값 : chamchi
string chamchi = kimbop_node.ChildNodes[0].Attributes["menu"].Value;

// 결과값 : kimchi
string kimchi = kimbop_node.ChildNodes[1].Attributes["menu"].Value;

// 결과값 : egg
string egg = kimbop_node.ChildNodes[2].Attributes["menu"].Value;

// 결과값 : spicy
string spicy = kimbop_node.ChildNodes[3].Attributes["menu"].Value;

 

중복노드의 값들 가져오기

XmlNodeList shortname_node = xmlDoc.SelectNodes("category/shortname");

// 결과값 : T1
string shortname_1 = shortname_node[0].InnerText;

// 결과값 : T2
string shortname_2 = shortname_node[1].InnerText;

// 결과값 : T3
string shortname_3 = shortname_node[2].InnerText;
728x90

댓글