El API JAXP

En esta p�gina usaremos la aplicaci�n GUI DomEcho que hemos creado en la p�gina anterior para examinar visualmente un DOM. Veremos los nodos que componen el DOM, y como est�n distribuidos. Con el entendimiento adquirido, estaremos bien preparados para construir y modificar estructuras DOM en el futuro.

.�Mostrar un �rbol Sencillo

Empezaremos mostrando un sencillo fichero, para obtener una �dea de la estructura b�sica de un DOM. Luego veremos la estructura que resulta cuando incluimos elementos XML m�s avanzados.

Nota:

El c�digo usado para crear las figuras de esta secci�n est� en DomEcho02.java. El fichero mostrado es slideSample01.xml.

La figura 1 muestra el �rbol que veremos cuando ejecutemos el programa DomEcho sobre el primer fichero XML que creamos en el tutorial DOM.

Recuerda que el primer texto mostrado para cada nodo es el tipo del elemento. Despu�s viene el nombre del elemento, si existe, y luego el valor del elemento. Estas vistas muestran tres tipos de elementos: Document, Comment, y Element. Hay s�lo un tipo de documento para todo el �rbol -- es el nodo ra�z. El nodo comentarios muestra el atributo valor, mientras que el nodo Elemento muestra el nombre del elemento, "slideshow".

Nota:

Los diferentes tipos de nodos, sus propiedades y los m�todos usados para acceder a ellos est�n documentados en el interface org.w3c.dom.Node.

Si expandimos el elemento SlideShow veremos la ventana de la figura 2:

Aqu� podemos ver los nodos Text y Comment que se ha interpuesto entre elementos Slide. Los nodos de texto vaci�s existen porque no hay DTD que le diga al analizador que no existe texto. (Generalmente, la gran mayor�a de nodos en un DOM ser�n nodos Element y Text).

Una notable ausencia de esta imagen son los nodos Attribute. Una inspecci�n de la tabla org.w3c.dom.Node muestra que de echo hay un tipo de nodo atributo. Pero no est�n incluidos como hijos en el �rbol DOM. Se obtienen mediante el m�todo getAttributes del interface Node.

Nota:

Mostrar los nodos de texto es la raz�n para incluir las siguientes l�neas en el m�todo toString de AdapterNode. Si las eliminamos veremos algunos caracteres extra�os que se generan por los caracteres de nueva l�nea que hay en el texto.

String t = domNode.getNodeValue().trim();
int x = t.indexOf("\n");
if (x >= 0) t = t.substring(0, x);
s += t; 

.�Mostrar un �rbol m�s Complejo

Aqu� veremos el fichero XML de ejemplo que creamos al final de tutorial de SAX, para ver como aparecen en el DOM las referencias a entidades, las intrucciones de procesamiento, y las secciones CDATA.

Nota:

El fichero mostrado en esta secci�n es slideSample10.xml.

La figura 3 muestra el resultado de ejecutar la aplicaci�n DomEcho sobre slideSample10.xml, que incluye una entrada DOCTYPE que identifica el DTD del documento.

El interface DocType es realmente una extensi�n de w3c.org.dom.Node. Define un m�todo getEntities que usaremos para obtener nodos de Entidad -- los nodos que definen entidades. Al igual que los nodos Atributo, los nodos Entidad no aparecen como hijos de lo nodos DOM.

Cuando expandimos el nodo slideshow podemos ver la imagen de la figura 4.

Aqu�, est� iluminado el nodo de Instrucci�n de Procesamiento, mostrando que estos nodos si aparecen en el �rbol. La propiedad name contiene la especificaci�n-fuente que identifica la aplicaci�n a la que va dirigida la instrucci�n. La propiedad value contiene el texto de la instrucci�n.

Observa que los nodos de texto vac�os tambien se ven aqu�, aunque el DTD especifique que un slideshow s�lo puede contener elementos slide, nunca texto. L�gicamente, podr�amos pensar que estos nodos no aparecer�an. (Cuando este fichero fue analizado por SAX, estos elementos generaron eventos ignorableWhitespace, en vez de eventos character.

Los elementos de texto vac�os son incluidos porque por defecto, DocumentBuilder crea un DOM que incluye toda la informaci�n l�xica necesaria para reconstruir el documento original, y en su forma original. Esto incluye los nodos comentarios as� como los nodos de texto. Todav�a no hay ning�n mecanismo est�ndard para eliminar dicha informaci�n l�xica del DOM por eso tenemos que dejarlo con su estructura l�gica.

Nota:

La clase XmlDocumentBuilder de la implementaci�n de referencia define el m�todo setIgnoringLexicalInformation para este prop�sito.

Nos movemos hacia el segundo elemento slide y abrimos el elemento item que nos mostrar� la imagen de la figura 5.

Aqu�, est� iluminado el nodo de Referencia de Entidad. Observamos que contiene muchos nodos bajo �l. Este ejemplo s�lo muestra los nodos de texto y de comentario, pero la entidad podr�a contener otros nodos elementos.

Nos movemos hasta el �ltimo elemento item bajo el �ltimo slide y podremos ver la imagen de figura 6.

Aqu� est� iluminado el nodo CDATA. Observa que no hay nodos debajo de �l. Como la secci�n CDATA no se interpreta, todos sus contenidos est�n en la propiedad value del nodo.

.�Finalizando

En este punto, hemos visto muchos de los nodos que podremos encontrar en un �rbol DOM. Existen uno o dos m�s que mencionaremos en la siguiente p�gina, pero ahora sabemos lo que necesitamos para crear o modificar una estructura DOM. En la siguiente p�gina, veremos como convertir un DOM en un JTree con el que se pueda interactuar. O, si lo prefieres, puedes saltar a la secci�n posterior del turorial, donde aprenderas como Crear y Manipular un DOM.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR

SIGUIENTE ARTÍCULO