VB.NET 2008/VB - XML

XML - XML DOM (문서 개체 모델) 개념

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

 

XML DOM(문서 개체 모델) 클래스는 XML 문서의 메모리 내장 표현이다. DOM을 사용하여 XML 문서를 프로그래밍 방식으로 읽고, 조작하고, 수정할 수 있다.

 

XmlReader 클래스로도 XML을 읽을 수는 있지만, 이 클래스는 캐시되지 않은 정방향의 읽기 전용 액세스를 제공한다. 따라서 XmlReader로는 특성 값이나 요소의 내용을 편집할 수 없으며, 노드를 삽입하거나 제거할 수도 없다.

 

편집은 DOM의 기본 기능이다. 실제 XML 데이터는 파일에 저장될 때나 다른 개체에서 읽어 올 때 순차적인 방식으로 저장되지만 XML 데이터를 메모리에 표현하는 것은 일반적이고 구조적인 방식으로 수행된다. 다음은 XML 데이터이다.

 

<?xml version="1.0"?>
  <books>
    <book>
        <author>Carson</author>
        <price format="dollar">31.95</price>
        <pubdate>05/01/2001</pubdate>
    </book>
    <pubinfo>
        <publisher>MSPress</publisher>
        <state>WA</state>
    </pubinfo>
  </books>

 

 

아래 그림은 위 XML 데이터를 DOM 구조로 읽어올 때 메모리가 구조화되는 방법을 보여준다.

 

 

 

XML 문서 구조에서 이 그림의 각 원은 XmlNode 개체라고 하는 노드를 나타낸다. XmlNode 개체는 DOM 트리에서 기본 개체이다. XmlNode를 확장한 XmlDocument 클래스는 XML을 메모리에 로드하거나 파일로 저장하는 것처럼 문서 전체에 수행되는 메서드를 지원한다.

 

Node 개체에는 일련의 메서드 및 속성 뿐만 아니라 잘 정의된 기본적인 특성도 있다. 특성에는 다음이 포함된다.

 

- 노드에는 하나의 부모 노드가 있다. 부모 노드는 해당 노드의 바로 위에 있는 노드

- 대부분의 노드에서 자식 노드, 즉 바로 아래에 있는 노드가 여러 개 있을 수도 있다.

 

 

특성 처리 방법은 DOM의 특징 중 하나이다. 특성은 부모-자식 및 형제 관계에 있는 노드가 아니다. 특성 요소 노드의 속성으로 간주되며 이름 및 값 쌍으로 구성된다. 예를 들어, price 요소의 연관된 format="dollar"로 구성된 XML 데이터의 경우 format이라는 단어는 이름이고 format 특성의 값은 dollar 이다.

 

노드는 XML을 메모리로 읽어올 때 만들어진다. 그러나 모든 노드가 동일한 형식은 아니다. XML의 요소에는 처리 명령 대신 다양한 규칙과 구문이 있다. 따라서 다양한 데이터를 읽을 때 각 노드에 노드 형식이 지정된다. 이 노드 형식은 해당 노드의 특징 및 기능을 결정한다.

 

DOM은 XML 데이터를 메모리로 읽어와 구조를 변경하고, 노드를 추가하거나 제거하며, 요소에 들어 있는 텍스트에 포함된 노드의 데이터를 수정할 경우에 매우 유용하다. 그러나 그 밖의 상황에서는 DOM보다 더 빠른 다른 클래스를 사용할 수 있다. 캐시되지 않은 정방향의 고속 XML 스트림 액세스의 경우에는 XmlReader 및 XmlWriter를 사용해야 한다.

 

 

 

Dim ht As New Hashtable

Dim root As XmlNode = Me.GetRoot()
Dim updates As XmlNode = root.ChildNodes(Me.updates)

 

For Each node As XmlNode In updates.ChildNodes
    Dim v As UpdateVo = Me.GetVersion(node)
    ht.Add(v.GetVersion(), v)
Next

 

 

 

참조 : http://msdn.microsoft.com/ko-kr/library/hf9hbf87(v=vs.80).aspx

 

 

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

XML - XmlDocument 클래스를 사용한 XML 문서 접근  (0) 2011.05.20
XML - XmlWriter 클래스  (0) 2011.05.20
XML - XmlReader 클래스  (0) 2011.05.20
XML - XML 문서  (0) 2011.05.20