2011. 11. 4. 00:19

.NET에서 XML을 사용하기는 엄청 쉽습니다.
문제는 실버라이트는 다른 방식을 사용합니다....;;;;

연관글 영역

 

 

1. 테스트 데이터

테스트 데이터는 아래와 같습니다.

<?xml version="1.0" encoding="utf-8"?>
<tests>
 <test>
  <a1>1-0</a1>
  <a2>2-0</a2>
  <a3>3-0</a3>
 </test>
 <test>
  <a1>1-1</a1>
  <a3>3-1</a3>
 </test>
 <test>
  <a1>1-2</a1>
  <a2>2-2</a2>
  <a3>3-2</a3>
 </test>
</tests>

 

2. 사용하기

'System.Xml' 만 유징 해주시면 됩니다.
사실 'XmlDocument'로 로드만 된다면 그다음부터는 노드(Node) 순서대로 검색만 하면 됩니다.

//도큐 생성
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(txtXml.Text);

//루트가저오기
XmlNode xNode = xDoc.SelectSingleNode("tests");

//검색할 요소 리스트
XmlNodeList xNodeList = xNode.SelectNodes("test");

//최종 검색할 녀석
XmlNode xSearch = xNodeList.Item(1).SelectSingleNode("a1");

//검색된게 없으면 널이 온다.
if (null == xSearch)
{
	MessageBox.Show("값이 없어요~");
}
else
{
	MessageBox.Show(xSearch.InnerText.ToString());
}

 

2번 줄 : 'XmlDocument'는 'XML데이터를 처리하기 쉽게 읽어 들여서 가지고 있다고 보시면 됩니다.
꼭 도큐먼트를 생성하지 않아도 처리할 수 있습니다.

6번 줄 : 'SelectSingleNode'는 하위 노드를 하나만 선택할 때 사용합니다.
만약 이름이 여러개인 경우 맨 처음 노드만 가져오게 됩니다.
검색값이 없으면 'Null'이 넘어오므로 데이터 구조가 정확하지 않은 경우에는 꼭 예외 처리해야 합니다.

9번 줄 : 'SelectNodes'는 하위에 검색된 모든 노드를 리턴합니다.
보통 XML을 검색하면 노드가 여러개인 경우가 많아 자주 사용하게 됩니다.

12번 줄 : 'XmlNodeList'는 자체가 리스트라 검색할 수 없으므로 인덱스로만 데이터를 가져올 수 있습니다.
Item(index)로 원하는 순서의 노드를 받아올 수 있습니다.

 

 

마무리

간단하게 XML을 다루어 보았습니다.