VB.NET 2008/VB - XML

XML - XmlReader 클래스

본클라쓰 2011. 5. 20. 10:32

 

XmlReader 클래스는 추상 기본 클래스로 스트림 또는 파일에서 XML 데이터를 읽는 기능을 지원하는데, 읽고자 하는 XML 데이터에 대해 캐시되지 않은 앞으로만 이동 가능한 읽기 전용 액세스를 제공한다.

 

또한 데이터를 이동하고 노드의 내용을 읽을 수 있게 하는 메서드와 속성을 정의한다. 현재 노드란 판독기가 배치된 노드를 말한다. 판독기는 읽기 메서드를 사용해 앞으로 이동하며, 속성은 현재 노드의 값을 반환한다.

 

XmlRader 클래스를 사용하면 다음을 수행할 수 있다.

 

- 문자가 올바른 XML 문자인지와 요소 및 특성 이름이 유효한 XML 이름인지를 확인한다.

- XML 문서가 제대로 구성되었는지 확인한다.

- DTD 또는 스키마에 대해 데이터의 유효성을 검사한다.

- XML 스트림에서 데이터를 검색하거나 끌어오기 모델을 사용하여 원치 않는 레코드를 건너뛴다.

 

XmReaer 개체는 Create 메서드를 사용하여 만든다. XmlReaderSettings 클래스를 사용하여 XmlReader 개체에서 사용할 기능 집합을 지정할 수 있다.

 

Dim settings As New XmlReaderSettings()

settings.ConformancelLevel = ConformanceLevel.Fragment

settings.IgnoreWhitespace = true

settings.IgnoreComments = true

Dim reader As XmlReader = XmlReader.Create("books.xml", settings)

 

 

 

XmlReader 클래스는 앞으로만 이동 가능한 스트림을 제공한다. 앞으로 이동시키는 메소드의 종류는 다음과 같다.

 

- IsStartElement : MoveToContent를 호출하고 현재 내용 노드가 시작 태그 또는 빈 요소 태그인지 테스트한다.

- IsStartElement(String) : MoveToContent를 호출하고 현재 콘텐츠 노드가 시작 태그 또는 빈 요소 태그인지 여부와 찾은 요소의 Name 속성이 지정된 인수와 일치하는지 여부를 테스트한다.

- MoveToAttribute(Int32) : 지정된 인덱스가 있는 특성으로 이동한다.

- MoveToContent : 현재 노드가 내용 노드인지 여부를 확인한다. 해당 노드가 내용 노드가 아니면 판독기는 다음 내용 노드로 건너뛴다.

- Read : 스트림에서 다음 노드를 읽는다.

 

등등이 있다.

 

또한 각 노드는 NodeType이 존재하는데 NodeType은 다음과 같다.

 

- XmlNodeType.Element : 시작태그

- XmlNodeType.Text : 값

- XmlNodeType.ProcessingInstruction :

- XmlNodeType.Comment : 주석

- XmlNodeType.XmlDeclaration : 문서 선언

- XmlNodeType.DocumentType : 문서 타입

- XmlNodeType.EndElement : 종료태그

 

 

XmlReader는 스트림으로 xml 문서에 접근하는 방법으로 HTML DOM 방식처럼 노드에 접근하지 못한다. 만약 HTML DOM 방식으로 노드에 접근하고 싶다면 XmlDocument 클래스를 사용해야 한다.

 

 

 

Dim s As New XmlReaderSettings
s.IgnoreWhitespace = True
s.IgnoreComments = True

            

Dim reader As XmlReader = XmlReader.Create(XmlFile, s)
'reader.MoveToContent()

While reader.Read

    If reader.IsStartElement() Then
        If reader.IsEmptyElement Then
            Console.WriteLine("<{0}/>!!!!!!!!!", reader.Name)
        Else
            Console.Write("<{0}> ", reader.Name)
            reader.Read()

                ' Read the start tag.
                If reader.IsStartElement() Then

                    ' Handle nested elements.
                    Console.Write(vbCr + vbLf + "<{0}>", reader.Name)
                End If

            'Read the text content of the element.
            Console.WriteLine(reader.ReadString())

         End If
    End If

End While

'VB.NET 2008 > VB - XML' 카테고리의 다른 글

XML - XmlDocument 클래스를 사용한 XML 문서 접근  (0) 2011.05.20
XML - XmlWriter 클래스  (0) 2011.05.20
XML - XML DOM (문서 개체 모델) 개념  (0) 2011.05.20
XML - XML 문서  (0) 2011.05.20