, , ,



.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로 로드만 된다면 그다음부터는 노드순서대로 검색만 하면 됩니다.
뭐....좀더 심플하게 코드를 짜고 싶다면 할수는 있지만 코드는 가독성이 높아야 좋다고 생각하기 때문에 ㅎㅎㅎㅎ

XmlDocument는 Xml데이터를 처리하기 쉽게 로드한다고 보시면 됩니다.
꼭 도큐를 생성하지 않아도 처리 할수 있습니다.

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

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

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

//
//도큐 생성
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());
}







댓글 작성

이름
패스워드
홈페이지
비밀글

티스토리 툴바