.NET에서 XML을 사용하기는 엄청 쉽습니다.
문제는 실버라이트는 다른 방식을 사용합니다....;;;;
테스트 데이터는 아래와 같습니다.
<?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>
'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을 다루어 보았습니다.