XML을 Datasource로서 GridView에 binding하기 위해서는 아래와 같은 방식으로 처리가 가능하다.
DataSet ds = new DataSet();
XmlTextReader xtr = new XmlTextReader(xeItemRoot.ToString(), XmlNodeType.Element, new XmlParserContext(null, null, null, XmlSpace.None));
ds.ReadXml(xtr);
GridView1.DataSource = ds.Tables[1];
GridView1.DataBind();
위에서 사용한 XmlTextReader 생성자의 첫번째 인자에는 잘 구성된 Xml의 Element node나 Document자체가
지정이 가능하며 이는 두번째 인자에서 type을 설정한다. 위와 같은 방법으로 간단하게 처리가 되나 Xml의 구조에
따라 dataset의 table이 생성되는 것이 다르므로 이에 유의 한다.
!지정되는 Element에 attribute가 있으면 해당 attribute만으로 table이 하나 생성된다. 이는 각자의 Xml을 가지고
직접 수행을 해보면 실제적으로 처리되는 내용을 쉽게 알 수 있을 것이다.
간단한 xml을 가지고 샘플 코드로 테스트 한 결과는 아래와 같다.
[샘플코드] space.xml
------------------------------------------------------------------------------------------------------
XDocument xd = XDocument.Load("D:\\space.xml");
XElement xe1 = new XElement(xd.Root.Element("STARS"));
XElement xe2 = new XElement(xd.Root.Element("DETAILINFOS"));
XElement xe3 = new XElement(xd.Root.Element("PLANETS"));
XmlTextReader xtr1 = new XmlTextReader(xe1.ToString(), XmlNodeType.Element, new XmlParserContext(null, null, null, XmlSpace.None));
XmlTextReader xtr2 = new XmlTextReader(xe2.ToString(), XmlNodeType.Element, new XmlParserContext(null, null, null, XmlSpace.None));
XmlTextReader xtr3 = new XmlTextReader(xe3.ToString(), XmlNodeType.Element, new XmlParserContext(null, null, null, XmlSpace.None));
DataSet ds1 = new DataSet();
ds1.ReadXml(xtr1);
GridView1.DataSource = ds1.Tables[0];
GridView1.DataBind();
DataSet ds2 = new DataSet();
ds2.ReadXml(xtr2);
GridView2.DataSource = ds2.Tables[0];
GridView2.DataBind();
DataSet ds3 = new DataSet();
ds3.ReadXml(xtr3);
GridView3.DataSource = ds3.Tables[0];
GridView3.DataBind();
------------------------------------------------------------------------------------------------------
[결과표]
STAR_Text |
---|
Sun |
Proxima Centauri |
Rigil Kentaurus |
Barnard's Star |
Wolf 359 |
Sirius A and B |
NAME | DISTANCEFROMTHESUN | LENGTHOFYEAR | ROTATIONPERIOD | VELOCITY | DIAMETER |
---|---|---|---|---|---|
Earth | 49,600,000 km | 365.26 days | 23.93 hours | 29.79 km/sec | 12,756 km |
Mars | 228,000,000 km | 687 days | 24 hr 37 min | 24.14 km/sec | 6,792 km |
PLANET_Id | NAME |
---|---|
0 | Mercury |
1 | Venus |
2 | Earth |
3 | Mars |
4 | Jupiter |
5 | Saturn |
6 | Uranus |
7 | Neptune |
8 | Pluto |
댓글 없음:
댓글 쓰기