Manipulando arquivos XML em Java com a API DOM – Parte I

27 Apr 2009
3 mins read

A interface DOM

DOM é uma interface de programação, baseada no modelo de objetos, que permite a manipulação e transformação de documentos em XML. A interface DOM manipula documentos XML na forma de uma estrutura em árvore. Quando um documento é carregado na memória do computador, suas estruturas podem ser lidas e manipuladas através do objeto DOM.

A interface DOM faz a representação do documento XML na forma de uma árvore de objetos, onde cada nó da árvore representa um componente do documento. Após o processamento completo do documento XML, a memória deverá conter a árvore de objetos DOM, a qual disponibiliza para as aplicações qualquer informação relacionada à estrutura e ao conteúdo do documento.

O modelo implementado pela interface DOM é a forma mais flexível para manipulação do conteúdo de um documento XML. Este modelo não é limitado pela ordem em que as estruturas do documento são processadas, logo é possível navegar pelo documento em qualquer ordem. Contudo, como utilização do objeto DOM requer a leitura de toda estrutura XML em uma árvore na memória, pode acontecer um alto consumo de recursos da máquina.

O modelo DOM define classes de objetos para representar cada fragmento de um documento XML. Existem objetos para representação de elementos, atributos, entidades, texto, entre outros. O objeto básico do DOM é o nó (Node). Existem especializações para os diversos tipos de nó. O nó é um objeto genérico na árvore e, portanto, a maioria dos objetos DOM herdam dele. O elemento mais alto de uma árvore DOM é representado pelo objeto Document, que também herda do objeto Node. Conceitualmente, este elemento é a raiz da árvore e a partir dele é possível acessar a árvore completa do documento XML.

A figura abaixo representa o mapa DOM:

dom01

Agora você já sabe que a interface DOM é baseada em uma estrutura em forma de árvore; sabe que a árvore Dom contém um número de nós (Node). Do ponto de vista da linguagem java, um Node é uma interface. O Node é um tipo de dado base do DOM. Tudo na árvore DOM é um Node de um tipo ou de algum outro tipo.

Observe algumas interfaces importantes da API DOM:

dom02

O DOM define algumas subinterfaces da interface Node:

Alguns outros tipos: Comment, que representa um comentário no arquivo XML; ProcessingInstruction, que representa uma instrução de processamento; CDATASection, que representa uma seção CDATA.
É um pouco raro utilizar esses tipos, mas agora você já sabem que eles também existem.

Métodos

Quando se trabalha com DOM, você geralmente irá chamar os métodos listados abaixo:

Exemplo XML e DOM

Vamos pegar o XML abaixo como exemplo:

dom04

Apesar da interface DOM não especificar como se deve parsear um documento XML, especifica a sintaxe do documento e como os elementos estão estruturados como objetos DOM. Um documento XML é armazenado numa estrutura hierárquica em forma de árvore, e para cada elemento da árvore, é feita a conexão com seu pai ou filho, ou ainda informação (dado em forma de texto).

A figura abaixo mostra como é a estrutura do XML acima vista pela API DOM:

dom03

Conclusão

A interface baseada em objeto, semelhando ao DOM, é ideal para aplicações que manipulam todo o documento XML, tais como: navegadores, editores, processadores XSL, entre outras.

E no próximo post sobre a série, um passo a passo em java de como manipular um documento XML utilizando a interface DOM.

Até a próxima!