Compartilhar via


Modelo de objeto de documento XML (DOM)

A classe DOM (Modelo de Objeto de Documento XML) é uma representação na memória de um documento XML. O DOM permite que você leia, manipule e modifique programaticamente um documento XML. A classe XmlReader também lê XML; no entanto, ele fornece acesso não armazenado em cache, somente encaminhamento, somente leitura. Isso significa que não há recursos para editar os valores de um atributo ou conteúdo de um elemento ou a capacidade de inserir e remover nós com o XmlReader. A edição é a função primária do DOM. É a maneira comum e estruturada que os dados XML são representados na memória, embora os dados XML reais sejam armazenados de forma linear quando em um arquivo ou vindo de outro objeto. Veja a seguir os dados XML.

Entrada

<?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>

A ilustração a seguir mostra como a memória é estruturada quando esses dados XML são lidos na estrutura do DOM.

Estrutura do documento XML Estrutura do documento XML

Na estrutura de documento XML, cada círculo nesta ilustração representa um nó, que é chamado um objeto XmlNode. O objeto XmlNode é o objeto básico na árvore DOM. A classe XmlDocument , que estende XmlNode, dá suporte a métodos para executar operações no documento como um todo (por exemplo, carregá-lo na memória ou salvar o XML em um arquivo. Além disso, xmlDocument fornece um meio de exibir e manipular os nós em todo o documento XML. XmlNode e XmlDocument têm aprimoramentos de desempenho e usabilidade e têm métodos e propriedades para:

  • Acesse e modifique nós específicos do DOM, como nós de elemento, nós de referência de entidade e assim por diante.

  • Recuperar nós inteiros, além das informações que o nó contém, como texto em um nó de elemento.

    Observação

    Se um aplicativo não exigir a estrutura ou os recursos de edição fornecidos pelo DOM, as classes XmlReader e XmlWriter fornecerão acesso de fluxo não armazenado em cache e somente encaminhamento ao XML. Para obter mais informações, consulte XmlReader e XmlWriter.

Node objetos possuem um conjunto de métodos e propriedades, além de características básicas e bem definidas. Algumas dessas características são:

  • Os nós possuem um único nó pai - um nó pai que está um nó diretamente acima deles. Os únicos nós que não possuem um pai são a raiz do documento, pois são os nós de nível superior e contêm o próprio documento e fragmentos do documento.

  • A maioria dos nós pode possuir vários nós filho, que são nós diretamente abaixo deles. A seguir está uma lista de tipos de nós que podem possuir nós filho.

    • Documento

    • DocumentFragment

    • Referência da entidade

    • Elemento

    • Atributo

    Os nós XmlDeclaration, Notation, Entity, CDATASection, Text, Comment, ProcessingInstruction e DocumentType não têm nós filho.

  • Nodos que estão no mesmo nível, representados no diagrama pelos nós book e pubinfo, são irmãos.

Uma característica do DOM é como ele lida com atributos. Os atributos não são nós que fazem parte de relações de pai, filho e irmão. Os atributos são considerados uma propriedade do nó do elemento e são compostos por um nome e um par de valores. Por exemplo, se você tiver dados XML que consistem em format="dollar, associados ao elemento price, a palavra format é o nome e o valor do atributo format é dollar. Para recuperar o atributo format="dollar" do nó price, você chama o método GetAttribute quando o cursor está localizado no nó do elemento price. Para obter mais informações, consulte Acessar atributos no DOM.

À medida que XML é lido na memória, nós (nodes) são criados. No entanto, nem todos os nós são do mesmo tipo. Um elemento em XML tem regras e sintaxe diferentes de uma instrução de processamento. Portanto, como vários dados são lidos, um tipo é atribuído a cada nó. Esse tipo de nó determina as características e a funcionalidade do nó.

Para obter mais informações sobre os tipos de nós gerados na memória, consulte Tipos de Nós XML. Para obter mais informações sobre os objetos criados na árvore de nós, consulte Mapeamento da Hierarquia de Objetos para dados XML.

A Microsoft estendeu as APIs disponíveis no W3C (World Wide Web Consortium) DOM Nível 1 e Nível 2 para facilitar o trabalho com um documento XML. Embora dê suporte total aos padrões W3C, as classes, métodos e propriedades adicionais adicionam funcionalidade além do que pode ser feito usando o DOM XML do W3C. Novas classes permitem que você acesse dados relacionais, oferecendo métodos para sincronizar com dados ADO.NET, expondo dados simultaneamente como XML. Para obter mais informações, consulte Synchronizing a DataSet with an XmlDataDocument.

O DOM é especialmente útil para ler dados XML na memória para alterar sua estrutura, adicionar ou remover nós, ou modificar os dados contidos em um nó, como no texto contido em um elemento. No entanto, outras classes estão disponíveis que são mais rápidas do que o DOM em outros cenários. Para acesso rápido, não armazenado em cache, de fluxo apenas de encaminhamento ao XML, use XmlReader e XmlWriter. Se você precisar de acesso aleatório com um modelo de cursor e XPath, use a classe XPathNavigator .

Consulte também