다음을 통해 공유


XML DOM(문서 개체 모델)

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 문서 구조 XML 문서 구조

XML 문서 구조 내에서 이 그림의 각 원은 XmlNode 개체라고 하는 노드를 나타냅니다. XmlNode 개체는 DOM 트리의 기본 개체입니다. XmlNode를 확장하는 XmlDocument 클래스는 문서 전체에서 작업을 수행하는 메서드를 지원합니다(예: 메모리에 로드하거나 XML을 파일에 저장). 또한 XmlDocument 는 전체 XML 문서의 노드를 보고 조작하는 방법을 제공합니다. XmlNodeXmlDocument 모두 성능과 유용성이 향상되었으며 다음과 같은 메서드와 속성이 있습니다.

  • 요소 노드, 엔터티 참조 노드 등 DOM과 관련된 노드에 액세스하고 수정합니다.

  • 요소 노드의 텍스트와 같이 노드에 포함된 정보 외에 전체 노드를 검색합니다.

    비고

    애플리케이션에 DOM에서 제공하는 구조 또는 편집 기능이 필요하지 않은 경우 XmlReaderXmlWriter 클래스는 XML에 대한 캐시되지 않은 정방향 전용 스트림 액세스를 제공합니다. 자세한 내용은 XmlReaderXmlWriter참조하세요.

노드 개체에는 기본 및 잘 정의된 특성뿐만 아니라 메서드 및 속성 집합이 있습니다. 이러한 특성 중 일부는 다음과 같습니다.

  • 노드에는 단일 부모 노드가 있고 부모 노드는 바로 위에 있는 노드입니다. 상위 노드가 없는 노드는 최상위 노드이며 문서 자체와 문서 조각을 포함하므로 문서 루트뿐입니다.

  • 대부분의 노드에는 바로 아래에 있는 여러 자식 노드가 있을 수 있습니다. 다음은 자식 노드를 가질 수 있는 노드 형식 목록입니다.

    • 문서

    • DocumentFragment

    • 엔티티 참조

    • 요소

    • 속성

    XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstructionDocumentType 노드에는 자식 노드가 없습니다.

  • pubinfo 노드로 다이어그램에 표시되는 동일한 수준에 있는 노드는 형제입니다.

DOM의 한 가지 특징은 특성을 처리하는 방법입니다. 특성은 부모, 자식 및 형제 관계의 일부인 노드가 아닙니다. 특성은 요소 노드의 속성으로 간주되며 이름 및 값 쌍으로 구성됩니다. 예를 들어, format="dollar에 해당하는 요소 price이 있는 XML 데이터가 있는 경우, 단어 format는 이름이고 format 속성의 값은 dollar입니다. format="dollar" 노드의 특성을 검색 하려면 커서가 요소 노드에 있을 때 GetAttribute 메서드를 price 호출합니다. 자세한 내용은 DOM의 특성 액세스를 참조하세요.

XML을 메모리로 읽으면 노드가 만들어집니다. 그러나 모든 노드가 동일한 형식은 아닙니다. XML의 요소에는 처리 명령과 다른 규칙 및 구문이 있습니다. 따라서 다양한 데이터를 읽을 때 노드 유형이 각 노드에 할당됩니다. 이 노드 형식은 노드의 특징과 기능을 결정합니다.

메모리에서 생성된 노드 유형에 대한 자세한 내용은 XML 노드 유형을 참조하세요. 노드 트리에서 만든 개체에 대한 자세한 내용은 개체 계층을 XML 데이터에 매핑하는 방법을 참조하세요.

Microsoft는 XML 문서를 더 쉽게 사용할 수 있도록 W3C(World Wide Web 컨소시엄) DOM 수준 1 및 수준 2에서 사용할 수 있는 API를 확장했습니다. W3C 표준을 완벽하게 지원하는 동안 추가 클래스, 메서드 및 속성은 W3C XML DOM을 사용하여 수행할 수 있는 것 이상의 기능을 추가합니다. 새 클래스를 사용하면 관계형 데이터에 액세스할 수 있으므로 ADO.NET 데이터와 동기화하고 동시에 데이터를 XML로 노출하는 메서드를 제공합니다. 자세한 내용은 XmlDataDocument와 데이터 세트 동기화를 참조하세요.

DOM은 XML 데이터를 메모리로 읽어 구조를 변경하거나, 노드를 추가 또는 제거하거나, 요소에 포함된 텍스트와 같이 노드에서 보유하는 데이터를 수정하는 데 가장 유용합니다. 그러나 다른 시나리오에서는 DOM보다 더 빠른 다른 클래스를 사용할 수 있습니다. XML에 대한 캐시되지 않은 빠른 전달 전용 스트림 액세스를 위해 XmlReaderXmlWriter를 사용합니다. 커서 모델 및 XPath를 사용하여 임의 액세스가 필요한 경우 XPathNavigator 클래스를 사용합니다.

참고하십시오