Partilhar via


Modelo de objeto de documento XML (DOM)

A classe DOM (Document Object Model) 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, fornece acesso não armazenado em cache, somente encaminhamento e 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 principal função do DOM. É a maneira comum e estruturada como os dados XML são representados na memória, embora os dados XML reais sejam armazenados de forma linear quando estão em um arquivo ou vêm de outro objeto. A seguir estão 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 DOM.

XML document structure Estrutura do documento XML

Dentro da estrutura do documento XML, cada círculo nesta ilustração representa um nó, que é chamado de objeto XmlNode. O objeto XmlNode é o objeto básico na árvore DOM. A classe XmlDocument , que estende XmlNode, oferece 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 para 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 elementos, nós de referência de entidade e assim por diante.

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

    Nota

    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 para XML. Para obter mais informações, consulte XmlReader e XmlWriter.

Os objetos de nó têm um conjunto de métodos e propriedades, bem como características básicas e bem definidas. Algumas dessas características são:

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

  • A maioria dos nós pode ter 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 ter nós filho.

    • Documento

    • DocumentFragment

    • EntidadeReferência

    • Elemento

    • Atributo

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

  • Os nós 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 das relações pai, filho e irmãos. 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 consistindo em format="dollar" associado ao elemento price, a palavra format é o nome e o valor do format atributo é dollar. Para recuperar o format="dollar" atributo do nó de preço, chame o método GetAttribute quando o cursor estiver localizado no nó do price elemento. Para obter mais informações, consulte Acessando atributos no DOM.

À medida que o XML é lido na memória, os nós 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, à medida que vários dados são lidos, um tipo de nó é 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 Mapeando a hierarquia de objetos para dados XML.

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

O DOM é mais útil para ler dados XML na memória para alterar sua estrutura, adicionar ou remover nós ou modificar os dados mantidos por um nó, como no texto contido por 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 de fluxo rápido, não armazenado em cache e somente encaminhamento para XML, use o XmlReader e o XmlWriter. Se você precisar de acesso aleatório com um modelo de cursor e XPath, use a classe XPathNavigator .

Consulte também