XML Y JAVA » Prácticas
Apr 22, 2015
XML Y JAVA
» Prácticas
XML y Java
• Contenido− SAX: Construcción de un analizador simple SAX: SimpleSax
Prácticas
• Ejemplo de eventos SAX:XML DocumentXML Document
<?xml version=“1.0”?>
<pizzas>
</pizzas>
<pizza>
</pizza>
<ingred>Tomate</ingred>
<ingred>………… </ingred>
<pizza>
</pizza>
<ingred>Tomate</ingred>
<ingred>………… </ingred>
SAX ObjectsSAX Objects
startDocument
ParserParser startElement
ParserParser startElement & characters
ParserParser startElement & characters
ParserParser endElement
ParserParser startElement
ParserParser startElement & characters
ParserParser startElement & characters
ParserParser endElement
ParserParser endElement & endDocument
ParserParser startElement
SAX
» SimpleSax
Prácticas
• Nuestra primera práctica consiste en construir un analizador de XML simple, basándonos en la API Sax.
• Será algo así como el “HolaMundo” pero con la API Sax….
• Crearemos un nuevo proyecto en Netbeans:− File->New Project->General->Java Application
• Lo llamaremos 04SimpleSax.
• En el campo Create Main Class, estableceremos simplesax.SimpleSax
Prácticas• Antes de continuar, debemos ir a las propiedades del
proyecto y añadir xerces-2.8.0.jar.
• El código fuente está en el directorio de prácticas (base-SimpleSax.txt), junto con el archivo “video.xml” para poder comprobar su funcionamiento.
• Tendremos que hacer un build y movernos al directorio dist para ejecutarlo, con la sentencia:
java –jar 04SimpleSax.jar videoclub.xml
• Contamos con que ese archivo también lo hemos copiado a esa ubicación…
Prácticas• Resultados que
esperamos:
SAX
» TituloPeliculas
Prácticas• En esta práctica, construiremos un analizador que
recorra el XML “video.xml” y muestre la siguiente información acerca de cada película:
• Título• Año de rodaje• Duración
• Para ello, en NetBeans iremos a File->New Project->General->Java Application
• Le daremos el nombre: 04TituloPeliculas.
• En el campo “create main class”, le daremos este valor:sax.videoclub.TituloPeliculas
Prácticas
• Una vez hecho esto, nos vamos a las propiedades del proyecto y le añadimos la librería xerces-2.8.0.jar.
• Ahora tomamos el fichero “base-TituloPeliculas.txt” y arreglamos los errores que NetBeans informa.
• Hacemos un Build y probamos el proyecto copiando de nuevo el archivo video.xml al directorio distcorrespondiente.
Prácticas
• Captura de la salida correcta del programa:
SAX
» SinopsisPelicula
Prácticas• En esta práctica, construiremos un analizador que
recorra el XML “video.xml” y muestre la siguiente información acerca de cada película:
• Título
• Año de rodaje
• Sinopsis
• Por lo tanto, extraeremos información de dos atributos y extraeremos el campo de datos, o información textual, lo cual llevaremos a cabo mediante el método characters).
Prácticas• Para ello, en NetBeans iremos a
File->New Project->General->Java Application
• Le daremos el nombre: 04SinopsisPelicula.
• En el campo “create main class”, le daremos este valor:sax.videoclub.SinopsisPelicula
• nos vamos a las propiedades del proyecto y le añadimos la librería xerces-2.8.0.jar.
• Ahora tomamos el fichero “base-SinopsisPeliculas.txt” y arreglamos los errores que NetBeans informa.
• Hacemos un Build y probamos el proyecto copiando de nuevo el archivo video.xml al directorio dist correspondiente.
Prácticas
• Hacemos un Build y probamos el proyecto copiando de nuevo el archivo video.xml al directorio distcorrespondiente
• Ejecución esperada:
SAX
» DetectaError
Prácticas• Ahora hemos hecho prácticas con manejadores de
contenido (ContentHandlers). Ahora vamos a hacer una práctica con Manejadores de Errores (ErrorHandler).
• Para ello, creamos un nuevo proyecto de aplicación java, con el nombre: “04DetectaError”. El campo CreateMain Class, lo llenamos con sax.DetectaError.
• Una vez más, agregamos la librería xerces-2.8.0.jar a nuestro proyecto.
• Rellenaremos el esqueleto de la clase DetectaError con el archivo base-DetectaError.txt. Solucionaremos los problemas que dicte Netbeans.
Prácticas• Haremos click derecho sobre el nombre del paquete (sax) y
elegimos crear una nueva clase java.
• Le otorgamos el nombre MiErrorHandler.
• Copiamos el contenido de base-MiErrorHandler.txt y arreglamos los errores que dicte Netbeans.
• Hacemos build del proyecto y nos dirigimos a su directorio dist. Copiamos en él, el archivo video.xml.
• Hacemos comprobaciones con el documento original y con errores en ese documento, para testear su comportamiento. En el ejemplo, “video2.xml” es una copia con errores.
Prácticas
• El comportamiento esperado es:
SAX
» ValidandoSax
Prácticas• En el ejemplo anterior, por mucho que “estropeemos” el
documento XML, lo normal es que obtengamos un error fatal.
• Los warnings y errores normales se producen cuando un documento está bien formado pero no es válido, cotejándolo con su DTD.
• Crearemos un nuevo proyecto, con el nombre: 04ValidandoSax. El campo Create Main Class, lo llenamos con sax.ValidandoError.
• Una vez más, añadimos la librería xerces-2.8.0.jar
• Llenaremos esa clase con el archivo base-ValidandoError, y solucionaremos lo errores que dicte Netbeans.
Prácticas
• Ahora, hacemos click derecho en el nombre del paquete (sax), y creamos una nueva clase java, que se llame MiErrorHandler. Resolvemos los errores que dicte Netbeans.
• Hacemos un build y nos movemos al directorio dist.
• Copiamos en él los archivos departamento*
• Efectuamos pruebas para comprobar el funcioamientode la validación de documentos en base a un DTD con los distintos archivos XML.
Prácticas
• La ejecución esperada es:
DOM
» SimpleDom
» Videoclub
» Videoclub2
» SinopsisDom
Prácticas• El primer proyecto se llamará 04SimpleDom, y el create
main class será dom.SimpleDom.
• El fuente es: base-SimpleDom.txt
• Usamos el archivo video.xml
• Hacemos build y vamos al directorio dist para probar como video.xml
• Sólo debe mostrar:C:\CursoSOA\04SimpleDom\dist>java -jar 04SimpleDom.jar video.xml
Analizando el documento: video.xml...
C:\CursoSOA\04SimpleDom\dist>
Prácticas
• El siguiente proyecto se llamará 04Videoclub, y el create main class será dom.Videoclub.
• El fuente es: base-Videoclub.txt
• Usamos el archivo video.xml
• Hacemos build y vamos al directorio dist para probar como video.xml
Prácticas
• Resultados esperados
Prácticas
• Ahora probamos la aproximación haciendo uso del método getElementsByTagName, de org.w3c.dom.Node.
• El proyecto se llamará 04Videoclub2, y el create mainclass será dom.Videoclub2
• El fuente es base-Videoclub2.txt, y debemos tomar como fichero para probar, video.xml.
• Debemos obtener el mismo resultado que antes.
Prácticas
• Resultados esperados
Prácticas
• Nos queda obtener la sinopsis.
• Creamos el proyecto: 04SinopsisDom, y en create mainclass, establecemos dom.Sinopsis
• Tomamos el archivo base-Sinopsis.txt.
• Tomamos el archivo video.xml.
• Build y probamos.
Prácticas
• Resultados esperados:
JDOM
» CrearArbolJDom
Práctica
• Vamos a crear un proyecto llamado 04CrearArbolJDom, y en create main class, establecemos jdom.CrearArbolJDom.
• Añadimos la librería jdom-1.0.jar
• Usamos el archivo base-CrearArbolJDom.txt
• Hacemos build y ejecutamos para ver el árbol creado.
Prácticas
• Resultados esperados
FIN