본문 바로가기

programming/XML

XML Reader 클래스


XmlReader 클래스는 XML문서를 인식하고 읽기 위한 클래스이다.
(특징 -> XML 데이터의 스트림에 비해 속도가 빠르고 캐싱되지 않는다는 것이다. 또한 ForwardOnly 방식으로 Xml 데이터에 접근하기 때문에 속도면에서 효율적이다.)

- XmlReader는 Read메서드를 미용해서 다음 데이터로 이동하며 읽기를 수행하고 각각의 속성 값들은 현재 XmlReader가 배치된 노드의 값을 반영하며 보여준다.

XMLReader클래스의 구현
 클래스 설명 
 XmlTextReader XmlTextReader 클래스는 XmlReader를 가장 빠르게 구현하는 클래스이다. XmlReader는 Well-formed Xml 문서이지에 대한 검사는 이루어지지만 데이터 유효성 검사는 하지 않는다. 또한 XmlTextReader 클래스는 일반 엔터티를 확장할 수 없고 기본 특성을 지원하지 않는다.
 XmlValidatingReader XmlValidatingReader는 XmlTextReader와는 달리 DTD나 스키마를 사용하여 데이터의 유횽성을 검사할 수 있는 XmlReader를 구현한다. 또한 일반 엔터티를 확장할 수 있고 기본 특성을 지원하고 있다. 
 XmlNodeReader XmlNodeReader는 XmlNode에서 XML 데이터를 읽는 XmlReader를 읽는다. 

XmlConvert 클래스
  - XML 문서의 데이터형의 변환을 위해서는 XmlConvert 클래스를 이용하면 편리하게 형변환을 할 수 있다.
     Double price = XmlConvert.ToDouble(reader.Value);


참고, XmlReader를 이용하는 경우 XML 구문 분석시에 오류가 발생하면 XmlException을 발생한다. 이와 같이 오류가 발생한 경우에는 XmlReader상태는 정확하게 예측할 수 없게 된다.


기본사용법

 namespace TestXML
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string filename="C:\\Documents and Settings\\admin\\바탕 화면\\XML연습\\Book.xml";
            XmlTextReader xtReader = null;
            try
            {
                xtReader = new XmlTextReader(filename);
                Response.Write("XmlTextRader 개체가 생성되었습니다.<br>");
                while (xtReader.Read())
                {
                    Response.Write(xtReader.Name.ToString());
                    Response.Write(xtReader.Value.ToString());
                    Response.Write("<br>");

                }

            }
            catch (Exception exception)
            {
                Response.Write("오류발생<br>");
                Response.Write("오류내용" + exception.ToString());
            }

            finally
            {
                if (xtReader != null)
                {
                    xtReader.Close();
                }
            }
        }
    }
}


'programming > XML' 카테고리의 다른 글

XML과 DB와의 연동 (xml <->DataSet <-> DB Table)  (2) 2010.06.30
XMLWriter 클래스  (0) 2010.06.22
네임스페이스와 Prefix  (0) 2010.06.21
Element와 Attribute  (0) 2010.06.21
XML(Extensible Markup Language)의 개요  (0) 2010.05.19