Integración de XML y los JavaBeans

La palabra que m�s suena actualmente es XML, las siglas para Extensible Markup Language. Pero es m�s que zumbido. Esta tecnolog�a de desarrollo r�pido est� bien adaptada para el uso con JavaBeans -- y complementa agradablemente la filosof�a Java de escribe-una-vez, ejecuta-en-cualquier-parte que ha dado al mundo una movilidad sin precedentes en la red. Este tutorial describe s�lo una posible aplicaci�n de XML: haciendo los JavaBeans m�viles e interoperables represent�ndolos como documentos XML.

El HTML (Hypertext Markup Language) actualmente es el formato de documento para la World Wide Web. �ltimamente, aunque, hay mucho ruido sobre XML (Extensible Markup Language), que permite, entre otras cosas, la capacidad de definir nuevas etiquetas de marcas (los bits entre los <angulos>), o incluso nuevos lenguajes de marcas. Algunos expertos incluso demandan que XML puede suplantar a HTML como el formato de informaci�n dominante en la Web.

Para algunos, XML se parece a una de esas ideas que, aunque excita al principio, no es enteramente utilizable en la pr�ctica. �C�mo utilizar�a XML un desarrollador en un sistema de la vida real? �C�mo de buena es la capacidad de definir etiquetas personalizadas si ning�n navegador las entiende? En esta p�gina veremos una posible aplicaci�n de XML -- usarlo como formato de serializaci�n para JavaBeans.

Primero, leeremos una r�pida introducci�n sobre qu� es XML y porqu� est� tanta gente as� de excitada con �l. Despu�s, oiremos hablar del modelo de objeto del documento del Consorcio de la World Wide Web (W3C's), el est�ndar propuesto para representar documentos como estructuras de datos. Como ejemplo de procesamiento de un documento como una estructura de datos, describiremos un lenguaje de marcas personalizado muy peque�o, y luego implementaremos una clase que lea un fichero XML y lo transforme en un JavaBean.

Por favor, observa que el prop�sito principal de esta p�gina es proporcionar un ejemplo de utilizaci�n de XML. Como no es una introducci�n a XML para principiantes, este p�gina debe ser comprensible con s�lo un poco de lectura preparatoria.

.��Qu� hay de malo en el HTML?

Hay mucho material introductorio en la Web sobre XML, as� que vamos a pasar r�pidamente sobre los fundamentos del XML. Comencemos discutiendo en primer lugar porqu� XML es necesario.

Es f�cil hacer el argumento de que el HTML permiti� la explosi�n de la Web. Entre otras muchas cosas que han hecho del HTML el formato dominante para los documentos Web est�n las siguientes:

  • HTML es muy f�cil de aprender y de utilizar. Pr�cticamente cualquier persona con pulso puede aprender a escribir HTML. Leer HTML en un navegador web es tan simple e intuitivo que casi todos lo aprenden inmediatamente.

  • La distribuci�n l�gica hace portables los documentos HTML. Las Marcas del HTML describen a un browser qu� papeles juegan las distintas partes del texto en un documento (t�tulo, elemento de la lista, etc�tera) y el navegador est� libre de decidir c�mo (o si) visualizarlos. Esto proporciona mucha independencia de dispositivo.

  • El Hypertexto forma webs de conocimiento. Una de las caracter�sticas m�s �tiles de HTML para muchas aplicaciones es la habilidad de hacer que la informaci�n "tome vida" y se refiera a otra informaci�n.

  • HTML forma un marco de trabajo para documentos mixtos. La adicci�n de applets y otras clases de elementos de p�gina "�ctivos" proporciona un inmenso control creativo a los desarrolladores de la "plataforma" Web.

A pesar de estas y otras muchas caracter�sticas que hacen al HTML tan �til, y tambi�n cool, tambi�n tiene otras serie de discapacidades que se convierten r�pidamente en obst�culos para usarlo en aplicaciones de datos serias:

  • HTML es un monstruo r�pidamente creciente. Fue dise�ado originalmente para compartir documentos entre los cient�ficos en la CERN. (los soportes de la CERN Conseil Europeen pour la Recherche Nucleaire, el centro para la investigaci�n nuclear europea, a trav�s de su Web site constantemente descrito como el laboratorio europeo para la f�sica de part�culas.) Quer�an texto estructurado con ciertas capacidades simples alrededor, hyperenlaces simples, control primitivo de la fuente, y quiz� algunas figuras y colores bonitos, y eso es lo que crearon. Era simple, elegante, y �til. Sigue siendo �til, pero la simplicidad y la elegancia se han salido de la ventana que los desarrolladores han exigido, y los creadores de navegadores han desarrollado, las nuevas caracter�sticas para HTML. La especificaci�n HTML se ha hinchado a una talla enorme con la adici�n de caracter�sticas tales como scripting, marcos, capas, vectores, formularios, hojas del estilo, objetos, applets, etc.

  • HTML se fija en piedra. Dentro de una versi�n determinada del est�ndar HTML, solamente ciertas etiquetas, como <TITLE> o <B/gt; (para boldface), son etiquetas reconocibles HTML. Si est�mos trabajando con HTML, nos peleamos con etiquetas reconocidas por la especificaci�n HTML (o nuestro navegador determinado). Si deseamos definir nuestras propias etiquetas por alguna raz�n, no tenemos suerte.

  • HTML est� muy centrado en el navegador. Los documentos HTML son, generalmente, texto plano con marcas para proporcionar la organizaci�n de su visualizaci�n, un cierto control sobre la fuente, y algo de contenido gr�fico. Son documentos escritos para que los lean los seres humanos, no para que los analicen y presenten programas del lado del cliente. Debido a esto, el HTML no es una buena opci�n como formato de informaci�n para los sistemas de proceso de datos automatizados.

  • HTML principalmente corrige la presentaci�n, no el contenido. Generalmente, las etiquetas HTML describen c�mo o en qu� contexto mostrar un texto particular. La sem�ntica del texto, es decir, lo que realmente significa el texto se pierde en el HTML.

.��Qu� Significan los Datos?

Esta �ltima deficiencia de HTML es el remache. Como los datos llegan a ser m�s m�viles en los sistemas de proceso de datos, es necesario transferir la informaci�n y la meta-informaci�n sobre lo que significan los datos. Un n�mero en una tabla HTML podr�a o no podr�a significar algo cuando el documento es le�do por un programa. Un documento XML se puede dise�ar para expresar no s�lo c�mo visualizar los datos, sino tambi�n qu� significan los datos.

Por ejemplo, una tabla HTML puede mostrar estad�sticas de un jugador de baseball:

<TABLE>
<TR ALIGN="CENTER" VALIGN="BOTTOM" BGCOLOR="#008080">
<TD><B>NO.</B></TD>
<TD><B>PLAYER</B></TD>
<TD><B>High School</B></TD>
<TD><B>AB</B></TD>
<TD><B>R</B></TD>
... 
   (etc) ...

Figura 1: una tabla HTML.
NO. PLAYER High School AB R H HR RBI AVG
12 Jonas Grumby Eaton 69 31 30 2 15 .435

Una representaci�n en filas-columnas de estos datos est� muy bien si lo que necesitamos es simplemente una visualizaci�n est�tica de datos en este formato determinado, pero no es una gran representaci�n si deseamos asociar el significado de los datos en nuestra aplicaci�n. Intentemos escribir un programa que lea el HTML de la Figura 1, extraiga la informaci�n sobre, por ejemplo, las carreras bateadas, y despu�s hagamos algo con esa cantidad. Con HTML, eso no es f�cil de hacer de una manera general. Imag�nemos, que nuestro fichero de datos se parece un poco a lo que vemos en la Figura 2:

<?xml  version="1.0">
<Player>
<Name>
	<First>Jonas</First>
	<Last>Grumby</Last>&
</Name>
<Number>12</Number>
<HighSchool>Eaton</HighSchool>
<Stats>
	<Year>1997</Year>
	<AtBats>69</AtBats>
	<Runs>31</Runs>
	<Hits>30</Hits>
	<HomeRuns>2</HomeRuns>
	<RunsBattedIn>15</RunsBattedIn>
	</Stats>
</Player>

Figura 2: Fichero de datos XML

Este XML representa la misma informaci�n que en el Figura 1. Ser�a f�cil seleccionar la estad�stica "RunsBattedIn" en este documento. El documento pod�a cambiar su estructura radicalmente, y la etiqueta <RunsBattedIn> todav�a ser�a relativamente f�cil de encontrar. El c�digo XML anterior contiene la misma informaci�n que el c�digo HTML de la Figura 1 pero se representa de forma que indica lo que significan los datos, no s�lo c�mo presentarlos.

Al igual que en el HTML, se puede asociar una hoja del estilo se puede asociar con XML, aunque el lenguaje de estilo de XML, XSL, es m�s poderoso y cr�ptico que las hojas de estilo en cascada de HTML. De hecho, XSL puede convertir XML en HTML para su visualizaci�n en un navegador! El XML de arriba podr�a visualizarse en un navegador como aparece en la Figura 1, pero los programas del lado del cliente tambi�n podr�an recoger y utilizar dicha estad�stica, puesto que hay una indicaci�n (mediante la etiqueta) de lo que significan los datos.

Podr�amos preguntarnos c�mo sab�amos qu� etiquetas utilizar para crear el fichero de ejemplo XML. �De d�nde vienen los nombres de las etiquetas (como RunsBattedIn)? La respuesta es: Los creamos. Acabamos de inventar las etiquetas de marcas para nuestra aplicaci�n! Crear un nuevo lenguaje de marcas es como crear cualquier otra clase de formato de fichero personalizado. Un desarrollador simplemente crea un formato de fichero que resuelva las necesidades de la aplicaci�n. Los ficheros XML son especiales porque se adaptan a la definici�n XML, y los programas que los procesan pueden esperar entradas de una cierta estructura, y razonablemente peuden rechazar las entradas que no siguen esa estructura.

En el ejemplo anterior, hemos creado un nuevo sublanguage XML simplemente inventando nuevas etiquetas y us�ndolas consistentemente. XML tambi�n proporciona la opci�n de especificar un Document Type Definition (DTD), que es una especificaci�n de qu� elementos forman un documento v�lido. Un DTD da a un desarrollador mucho m�s control sobre el formato de un documento XML. No vamos a cubrir DTDs en este tutorial, pero son un concepto b�sico de XML.

Si pensamos que XML parece HTML, es porque son primos cercanos. XML y HTML son aplicaciones de SGML (Standard Generalized Markup Language) , que es un metalanguage -- es decir, un lenguaje para describir lenguajes. SGML es una herramienta extremadamente poderosa, flexible, y compleja, y su complejidad ha conducido a su uso sobre todo en enormes organizaciones, como gobiernos y grandes corporaciones. XML es un subconjunto de SGML que conserva la mayor potencia de SGML mientras simplifica su uso para los mortales comunes. De hecho, HTML y XML se especifican realmente como DTDs del SGML (�Todav�a te queman las siglas?)

Refiri�ndonos otra vez a la figura 2, observa que XML indica lo que significan los datos, no c�mo se deben visualizar. Observa tambi�n que las etiquetas ciertamente no son est�ndard HTML (esperemos que la etiqueta <RunsBattedIn> nunca sea parte del est�ndar de HTML!) Este ejemplo muestra una de las fuerzas de XML: la capacidad de definir etiquetas personalizadas para satisfacer una aplicaci�n determinada. Finalmente, observa que el promedio de bateo no aparece en los datos XML. Esto es porque el promedio se podr�a calcular a partir de los otros valores.

Una de las habilidades m�s poderosas de XML es que, con XML, un dise�ador de sistemas puede crear un lenguaje de marcas personalizado que mantenga la sem�ntica de los datos.

Ahora que hemos visto a qu� se parecen los ficheros XML, veremos como procesar datos XML en Java.

.�El Document Object Model (DOM)

Los lenguajes como HTML y XML se llaman a menudo lenguajes de marcas estructurados. Esto significa que las marcas de un fichero tienen una estructura determinada que significa algo para las aplicaciones que lo procesan. Por ejemplo, los ficheros HTML comienzan con el elemento <HEAD>, que contiene un <TITLE>, que contiene texto, etc�tera. Un navegador HTML visualiza la informaci�n de un fichero HTML bas�ndose en esta estructura.

Las estructuras XML y HTML son tan simples y consistentes que es muy f�cil representar cualquier documento XML o HTML como un �rbol de objetos, tanto en Java como en cualquier otro lenguaje de programaci�n. El Consorcio de la World Wide Web (W3C) ha definido un conjunto completo de objetos que se pueden utilizar para procesar documentos XML y HTML como �rboles. La especificaci�n para este conjunto de objetos se llama Document Object Model. Volvamos de nuevo a nuestro ejemplo y veamos c�mo representar un documento como un �rbol.

Echemos otra mirada al XML de la figura 2. Observaremos que el documento tiene una estructura jer�rquica: los elementos contienen otros elementos. Por ejemplo, el elemento <Name> contiene un elemento <First> y un elemento <Last>. Esta relaci�n "contenida" se podr�a representar en un diagrama de clases, seg�n lo mostrado en la figura 3. En este diagrama, una clase Player contiene un entero Number y un String High School, y tambi�n contiene referencias a otros dos objetos, a un objeto PersonName y un objeto Statistics. Cada uno de estos objetos tambi�n contiene otros objetos.


Figura 3: Diagrama de clases.

Los documentos HTML tambi�n tienen esta estructura "contenida", pero en un documento HTML, la estructura refleja informaci�n sobre el documento (el t�tulo, las cabeceras, etc�tera) en lugar de reflejar la estructura de la informaci�n representada por el documento. El documento XML anterior refleja c�mo la informaci�n se relaciona con otras informaciones.

En general, podemos pensar en un documento XML (o HTML) como una estructura arborescente, con las relaciones "contenidas" en el documento que corresponden a relaciones padre-hijo en el �rbol. Una posible representaci�n gr�fica de esta idea aparece en la figura 4. (Las variables determinadas que eleg�mos para el documento no son de notaci�n est�ndar. Simplemente distinguen diversos tipos de objetos.)


Figura 4: Un �rbol DOM

As� pues, un programa puede representar un documento XML como un �rbol de objetos Element, cada uno de los cuales puede contener otros objetos Element y Text. El documento completo est� enraizado en un s�lo objeto Document. Los objetos Text contienen los datos del objeto.

El paquete Java org.w3c.dom es el est�ndar de "uni�n" de la especificaci�n DOM en t�rminos de los interfaces de Java (lo que significa que todos sus m�todos son abstractos, y por lo tanto no tiene ninguna implementaci�n). Varios vendedores pueden implementar las clases de este paquete de cualquier manera que deseen. IBM, por ejemplo, ha implementado este paquete en su distribuci�n xml4j. Hay varias implementaciones de DOM, la mayor�a de las cuales incluyen extensiones espec�ficas del vendedor. Utilizaremos DOM en la aplicaci�n de ejemplo de abajo.

.�Analizadores XML DOM

Ahora que hemos definido un nuevo lenguaje, y tenemos un sistema de estructura de datos (DOM) para representar cualquier documento en este lenguaje como un �rbol en memoria, ser�a �til tener un analizador de sintaxis que convierta autom�ticamente un documento XML en su �rbol DOM. Una vez que tengamos la representaci�n DOM de un documento en memoria, podemos procesar el documento como un �rbol de nodos, en vez de como una serie de l�neas o de s�mbolos. Lo qu� necesitamos es un analizador de sintaxis Java que lea el fichero XML (que solamente es un fichero del texto, despu�s de todo) y produzca un solo objeto Document que contenga un �rbol de nodos DOM que representan completamente al documento.

Afortunadamente, no tenemos que salir y escribir un analizador de sintaxis desde el principio. Varias compa��as e individuos han escrito analizadores de sintaxis que leen documentos XML desde ficheros o streams y producen un objeto Document DOM, que es la ra�z de un �rbol de objetos DOM (seg�n lo vimos en la figura 4). El proceso completo de lectura de un fichero XML y de convertirlo en un �rbol utilizable se encapsula en el analizador de sintaxis. Muchas de las implementaciones del objeto DOM tambi�n incluyen las extensiones para hace la inversa; es decir, un Document DOM se puede imprimir como XML con una sola llamada a m�todo.

En el c�digo de ejemplo de abajo (s�, finalmente estamos consiguiendo un ejemplo de codificaci�n!!), hemos utilizado el analizador de sintaxis del paquete xml4j de IBM, que est� disponible para uso no comercial en la site de IBM http://www.alphaWorks.ibm.com/tech/xml4j, yo considero alphaWorks como uno de los sitios m�s interesantes de la tecnolog�a de Java en el Web. El paquete xml4j implementa completamente el W3C DOM, lo extiende una manera sensible pero encapsulada, y viene con una documentaci�n copiosa, y excelente.

.�Beans como Documentos XML

En el pensamiento de c�mo utilizar XML con JavaBeans, decid�mos que ser�a interesante utilizar XML como formato para la serializaci�n de beans. Es decir decid�mos crear un lenguaje de marcas que permita que un usuario cree un fichero de XML que especifique los valores para las propiedades de un JavaBean.

La clase de ejemplo que desarrollamos en este cap�tulo se llama XMLBeanReader. Lee un fichero XML (de un formato espec�fico que hemos definido) y usa su contenido para crear un JavaBean e inicializar las caracter�sticas del bean. El nombre de la clase JavaBean y los valores de las propiedades vienen del contenido del fichero XML. Todos los m�todos de esta clase son static.

Si entendemos c�mo funciona este peque�o programa de ejemplo, podemos ampliarlo para que maneje relaciones de eventos, b�squeda de valores por defecto para las propiedades, o buscando la informaci�n que no est� en el propio fichero XML para configurar el JavaBean. Las posibilidades son infinitas, una vez que entendamos que una estructura de datos JavaBeans se puede convertir en un fichero XML y viceversa.

La clase XMLBeanReader trabaja como el mecanismo est�ndar de serializaci�n de Java, en el que se toma una secuencia de un stream de datos "plano" y se utilizan esos datos para configurar las propiedades de un JavaBean. No crea una nueva clase. Utiliza XML para ejemplarizar un JavaBean y configurar sus propiedades para una clase de JavaBean que ya exista.

.�Lenguaje de Marcas JavaBean

Antes de escribir cualquier c�digo, necesitamos definir como ser� nuestro sencillo dialecto de XML. Puesto que nuestra aplicaci�n trata con JavaBeans, vamos a crear un lenguaje que permita que el usuario especifique un JavaBean y su clase, y despu�s especifique una lista de propiedades para el JavaBean.

A pesar de algunas semejanzas, la clase XMLBeanReader que est�mos a punto de ver no est� de ninguna manera relacionada con el lenguaje de marcas de beans de IBM (BML est� disponible en http://www.alphaWorks.ibm.com/). Una vez que entendamos lo que vamos ha hacer con el c�digo de este cap�tulo, podremos abordar mejores proyectos usando BML.

Para este sencillo dialecto XML, las �nicas etiquetas que necesitamos son:

  • <JavaBean>: una etiqueta que encierra una especificaci�n de contenidos de un JavaBean

  • <Properties>: una etiqueta que encierra todos los elementos <Property> de un JavaBean particular

  • <Property>: una etiqueta que encierra el valor de una sola propiedad

Ahora imaginemos, que ten�amos uan clase Player, que era un JavaBean con cuatro propiedades:

  • int Number: el n�mero del jugador

  • String HighSchool: El nombre del Instrituro del Jugador

  • PersonName Name: un JavaBean de la clase PersonName que es el nombre del jugador.

  • Statistics Stats: un JavaBean de la clase Statistics que contiene las estad�sticas de bateo del jugador en un a�o en particular.

Oserva que dos de los valores de las propiedades son JavaBeans a su vez. El c�digo fuente para las tres clases JavaBeans que vamos a utilizar lo puedes encontrar en:

Dando la clase JavaBean que acabamos de definir (Player), las etiquetas que hemos definido arriba, y los datos de la figura 2, podr�amos expresar el JavBean en XML en t�rmino de sus propiedades, de esta forma:

<?xml version="1.0"?>
<JavaBean CLASS="Player">
    <Properties>
        <Property NAME="Number">12</Property>
        <Property NAME="HighSchool">Eaton</Property>
        <!-- 
        Notice that the value for the properties "Name" 
        and** "Stats" are themselves 
        JavaBeans!** Notice also that comments 
        in XML files look** just like comments 
        in HTML 
        files.-->

        <Property NAME="Name">
            <JavaBean CLASS="PersonName">
                <Properties>
                    <Property NAME="First">Jonas</Property>
                    <Property NAME="Last">Grumby</Property>
                </Properties>
            </JavaBean>
        </Property>
        
        <Property NAME="Stats">
            <JavaBean CLASS="Statistics">
                <Properties>
                    <Property NAME="Year">1997</Property>
                    <Property NAME="AtBats">69</Property>
                    <Property NAME="Runs">31</Property>
                    <Property NAME="Hits">30</Property>
                    <Property NAME="HomeRuns">2</Property>
                    <Property NAME="RunsBattedIn">15</Property>
                </Properties>
            </JavaBean>
        </Property>
    </Properties>
</JavaBean>

Figura 5: El JavaBean Player en formato XML.

Lo primero que observaremos en el c�digo de arriba es que hay strings entre comillas dentro de las etiquetas, de esta forma:

<JavaBean CLASS="Player">

Estas cadenas se llaman atributos, y si has escrito HTML, los habr�s utilizado. Aparecen en etiquetas como los hiperenlaces (<A HREF="... ">) y los atributos de las im�genes (<IMG el SRC="... ">.) Los atributos simplemente son otra forma de asociar datos a un nodo de un Element DOM. El m�todo Element.getAttribute() devuelve un atributo de un Element con un nombre espec�fico. No hay reglas duras-y-r�pidas sobre cu�ndo incluir datos en un atributo y cu�ndo ponerlos en el objeto Text dentro del Element. Tendemos a utilizar los atributos para informaci�n estructural (clases, nombres de la propiedades, etc�tera) y Text para ejemplares de datos. Debemos utilizar lo que consideremos m�s f�cil.

.�Crear JavaBeans desde XML

La clase XMLBeanReader (codigo fuente en XMLBeanReader.java es bastante directa. El m�todo main() (l�neas 400 a 415) simplemente llama al m�todo est�tico readXMLBean(), pas�ndole el nombre del fichero de entrada. El resultado devuelto por readXMLBean() es un JavaBean cuya clase y contenido corresponden con lo que hab�a en el fichero XML. main() entonces chequea para ver si el JavaBean recien creado tiene una llamada al m�todo print() y, si es as�, main() lo llama.

readXMLBean() (l�neas 377 a 395) crea un analizador de sintaxis XML y lo invoca sobre el fichero de entrada. El resultado del m�todo readStream() del analizador de sintaxis es el �rbol del documento, que, si se dibuja, se parecer�a al de la figura 4. Entonces pasa la parte superior del Element del �rbol de documento (la etiqueta que debe ser JavaBean) al m�todo est�tico instantiateBean(), que es donde se hace todo el trabajo serio. El resultado de instantiateBean() es el JavaBean que cre� el m�todo.

instantiateBean() (l�neas 269 a 294) crea un JavaBean desde un �rbol DOM con un elemento <JavaBean> en la parte superior. Primero, crea un objeto del tipo indicado por el atributo CLASS del elemento <JavaBean>. Luego encuentra el nodo <Properties>, que es un hijo del nodo superior (<JavaBean>). Dentro de este <Properties> puede haber varios <Property>, cada uno de los cuales corresponde a una propiedad del JavaBean. Por cada <Property> Element (entre los hijos de <Properties>), instantiateBean() llama a setProperty(), pasandole el nombre de la propiedad, el descriptor de la propiedad (obtenido aplicando java.beans.Introspector al JavaBean creado), el Element que corresponde a la propiedad, y el nuevo bean. Cuando se ha terminado este proceso, se ha creado y se ha inicializado el JavaBean, y se puede volver al llamador.

El m�todo setProperty() (l�neas 048 a 249) tiene cuidado de seleccionar una propiedad de un JavaBean. Maneja propiedades regulares e indexadas por separado (ignorando las propiedades indexadas, por el momento). En el caso (usual) de una propiedad no indexada, setProperty() primero busca todos los hijos <Property> por cada nodo Text o elemento <JavaBean>, y registra lo que encuentra para su uso posterior. Tambi�n le pide a PropertyDescriptor el m�todo setter de la propiedad.

El resto de setProperty() concierne a la figuraci�n de los argumentos que pasar al m�todo de setter. Hay algunas condiciones posibles, que dependen del tipo de la propiedad, o sobre los argumentos previstos del m�todo setter:

  • El tipo de la propiedad es primitivo. (L�neas 110 a 147.) Todos los tipos primitivos puden construirse desde un String, as� que si el tipo de una propiedad es primitivo ( boolean, byte, int, long, float, o double), setMethod simplemente construye un objeto del tipo apropiado utilizando un constructor que acepta un String como argumento y pasa el valor del texto al Element. Las propiedades del tipo primitivo char se manejan como un caso especial, puesto que hemos decidido codificarlas como su valor entero, y no pueden no ser le�das y construidas desde Strings. El objeto que el m�todo construye se utiliza como el argumento al m�todo setter.

  • A aparecido un elemento <JavaBean> como un hijo de <Property>, dicha propiedad debe ser un JavaBean. (l�neas 168 a 191.) En este caso, el argumento que deseamos pasar al m�todo setter es realmente un JavaBean. Necesitamos ejemplarizar ese JavaBean antes de poder pasarlo al setter, y lo hacemos mediante llamadas recursivas a instantiateBean(), pas�ndole el elemento hijo <JavaBean>. El objeto que resulta (JavaBean) se pone en la lista de argumentos para el setter.

  • El m�todo setter para la propiedad toma como �nico argumento un String. (L�neas 193 a 203.) Este es un caso sencillo. La lista de argumentos para el setter s�lo contiene el Element text de Property.

  • El m�todo setter para la propiedad acepta como �nico argumento un objeto que pueda ser construido desde un String. (l�neas 205 a 222.) En este caso, setMethod() hace exactamente lo que se hac�a en el caso primitivo: construye un objeto del tipo apropiado, usando el texto del Element como el argumento del constructor, y despu�s pone este nuevo objeto en la lista de argumentos (setterArgs) para el setter.

Si no se cumple ninguna de estas condiciones, setProperty() no es capaz de fijar la propiedad, y vuelve sin hacer nada. (Probablemente deber�a lanzar una IllegalArgumentException, pero esto es s�lo un programa de demostraci�n.)

Ejecutando el m�todo main() del fichero class, y pas�ndole el fichero fuente XML que vimos en la Figura 5, produce un JavaBean en ejecuci�n con todas sus propiedades fijadas a los valores que vinieron (originalmente) desde el XML, incluyendo las propiedades cuyos valores son JavaBeans. Podemos ver la salida de este programa en Example.html. Veremos que el bean Stadistics se�ala de hecho sus propiedades fijadas correctamente.

.�Conclusi�n

En un espacio muy peque�o, hemos cubierto una cantidad enorme de terreno. Hemos le�do sobre qu� es XML, y qu� puede hacer que HTML no puede. El ejemplo XML de una estad�stica de bateo mostr� c�mo la estructura XML se puede utilizar para reflejar el significado de los datos, no su presentaci�n. Entonces le�mos sobre el interface program�tico est�ndar de XML, el modelo del objeto del documento DOM, y despu�s vimos un ejemplo de DOM y XML en acci�n, siendo utilizado para crear e inicializar un nuevo ejemplar de JavaBean.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP