XML 특정 하위노드 및 자식노드를 좀 간단히 읽어보기
[퍼온글] : http://goodhelper.egloos.com/1916101
가끔 프로그램을 유지보수 하다 보면 종종 XML 을 읽어야 할때가 있습니다.
C# 은 그래도 꽤 간편한 언어에 속하는 편이라서 XML 을 로드해서 처리하기가
매우 쉽고 간단하게 됩니다~
C#에서 XML 을 읽어 올때 주로 사용하되는게 XmlTextReader 와 XmlDocument 가 있습니다.
이번 포스트에서는 XmlDocument를 이용하여 XML을 로드하고 그중 자식노드 및 특정 자식 노드값을
읽어서 배치해 보겠습니다.
<?xml version="1.0" encoding="EUC-KR" standalone="yes" ?>
<main>
<main_node>
<class>1학년</class>
<class>2학년</class>
<class>3학년</class>
<class_name>
<code>예술반</code>
<code_name>미술</code_name>
<code_count>10명</code_count>
<class_teacher>
<teacher>홍길동 선생</teacher>
<teacher_sex>남자</teacher_sex>
</class_teacher>
<school>
<code>12345</code>
<code_name>예술학교</code_name>
</school>
</class_name>
</main_node>
</main>
위와 같은 XML을 불러 올때 고민스러운건 중복된 태그명이 존재한다는거와 자식노드들이 있다는 겁니다
물론 방법론적으론 자식노드 리스트를 작성하고 ChildNode 를 사용하여 for 문으로 돌려서 구할 수 있지만
아무래도 소스가 복잡해지고 무엇보다 파싱하기가 귀찮지요~~ ㅎ
다행히 csharp-examples.net 에 Jan Slama 란 분히 저같은 사람을 위해 간단히 파싱하는 법을 올려놨네요~ ^^;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml;
using System.IO;
namespace xml_load {
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string url = @"http://www.Xml주소/XML파일.xml"; //xml 을 불러올 주소 (로컬은 c:\\디렉토리명 이 되겠지요~)
try
{
XmlDocument xml = new XmlDocument ();
xml.Load(url);
XmlNodeList xnList = xml.SelectNodes( "/main/main_node/class_name" ); //접근할 노드
foreach (XmlNode xn in xnList)
{
string part1 = xn["code"].InnerText; //예술반 불러오기
string part2 = xn["code_name"].InnerText; //예술반 code_name 불러오기
string part3 = xn["class_teacher"]["teacher"].InnerText; //선생님 이름
string part4 = xn["school"]["code"].InnerText; //학교노드의 code 불러오기
string part5 = xn["school"]["code_name"].InnerText; //학교노드의 code_name 불러오기
richTextBox1.AppendText(part1 + " | " + part2 + " | " + part3 + " | " + part4 + " | " + part5);
}
}
catch (ArgumentException ex)
{
MessageBox.Show("XML 문제 발생\r\n" + ex);
}
}
}
}
[출처] [C#] XML 특정 하위노드 및 자식노드를 좀 간단히 읽어보기|작성자 한심이79
'Programming > C#' 카테고리의 다른 글
Windows Forms FAQ (0) | 2011.10.25 |
---|---|
[링크] WinForm Study (0) | 2011.10.25 |
[C#] xml 파싱 (0) | 2011.10.25 |
C#으로 xml 처리하기 (0) | 2011.10.25 |
현재 Process의 한영 정보 얻기 (0) | 2011.10.10 |