.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을 다루어 보았습니다.