Você está na página 1de 84

Curso de XML con tecnologías Java

Formación y Soluciones Informáticas EFIBS S.A


Derechos Reservados - 2007.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


1

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

2. DOM

Copyright Formación y Soluciones Informáticas EFIBS S.A.


2

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

2. DOM

Copyright Formación y Soluciones Informáticas EFIBS S.A.


3

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

1.1 Introducción

1.2 Requerimientos

1.3 XML

1.4 DTDs
1.5 SAX

Copyright Formación y Soluciones Informáticas EFIBS S.A.


4

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.1 Introducción

Qué es XML y qué elementos lo


El estándar XML
componen

Acceso a los datos de un


DOM
documento XML

XML (eXtensible Markup Language) es un metalenguaje de etiquetas, un contenedor de


datos que se puede configurar a gusto del programador. Su potencia lo ha llevado a
extender su presencia en Internet de una manera vertiginosa en los últimos años

Copyright Formación y Soluciones Informáticas EFIBS S.A.


5

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

1.1 Introducción

1.2 Requerimientos

1.3 XML

1.4 DTDs
1.5 SAX

Copyright Formación y Soluciones Informáticas EFIBS S.A.


6

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.2 Requerimientos
PC con Windows 98 / NT / 2000, 64 MB de RAM (depende del servidor a usar)

Ø Para entorno Microsoft:


Internet Explorer
Parser MSXML 3 o superior.
Servidor IIS o Personal Web Server de Microsoft.

Ø Para entorno Java:


JDK 1.1.8 o superior
JAXP (Java API for XML Processing)
Servidor Web (por ej. Sun Application Server)

Copyright Formación y Soluciones Informáticas EFIBS S.A.


7

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

1.1 Introducción

1.2 Requerimientos

1.3 XML

1.4 DTDs
1.5 SAX

Copyright Formación y Soluciones Informáticas EFIBS S.A.


8

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Introducción a XML

Ø XML (eXtended Markup Language) es un lenguaje que


proporciona un formato para describir datos estructurados

Ø Es un lenguaje de marcas

Ø Es un subconjunto de SGML (Standard Generalized Markup


Language)

Ø Definido por el W3C en 1998

Copyright Formación y Soluciones Informáticas EFIBS S.A.


9

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Características XML

Ø Lenguaje de marcas extensible, es un metalenguaje

Ø Es “case sensitive”

Ø Representación estructural de los datos en forma de árbol

Ø Define los datos en una aplicación, no su presentación

Ø Permite interoperatividad entre máquinas distintas (un


estándar para el intercambio de datos)

Copyright Formación y Soluciones Informáticas EFIBS S.A.


10

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Ejemplo
<?xml version="1.0"?>
<!DOCTYPE discos SYSTEM "cds.dtd">
<discos>
<disco>
<artista tipo="individual">Frank Sinatra</artista>
<titulo numerodepistas="2">In The Wee Small Hours</titulo>
<pistas>
<pista>In The Wee Small Hours</pista>
<pista>Mood Indigo</pista>
</pistas>
<precio>$12.99</precio>
</disco>
<disco>
<artista tipo="band">The Offspring</artista>
<titulo numerodepistas="2">Americana</titulo>
<pistas>
<pista>Welcome</pista>
<pista>Have You Ever</pista>
</pistas>
<precio>$12.99</precio>
</disco>
</discos>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


11

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Elementos XML
Ø Un documento XML está formado por tags o etiquetas para
la estructuración de los datos.

Por ejemplo: <disco>

Ø Un elemento XML está formado por una etiqueta de inicio


y otra etiqueta final. Entre ambas está el valor del dato al que
se refiere el tag.

En este ejemplo, el elemento pista tiene como valor “Welcome”:

<pista>Welcome</pista>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


12

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Elementos XML - Atributos
Ø Un elemento XML puede contener uno o más atributos en su
tag inicial

En este ejemplo, el atributo sería “tipo”, y su valor “individual”:

<artista tipo="individual">Frank Sinatra</artista>

Ø Un elemento XML puede no contener un valor, solamente


atributos. En este caso se puede escribir con un solo tag
terminado en /.

Esta expresión
<precio valor=“$12.99”></precio>
equivale a

<precio valor=“$12.99”/>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


13

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Documentos XML
Un documento XML es un conjunto de elementos XML anidados
(con estructura de árbol)

Reglas a tener en cuenta:


Ø Todos los elementos deben cerrarse

Ø Los elementos deben estar limpiamente anidados

Ø Un documento XML debe tener un único elemento raíz

Copyright Formación y Soluciones Informáticas EFIBS S.A.


14

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Reglas de Construcción
de Nombres XML

En la construcción de nombres XML (atributos y elementos XML) se


deben tener en cuenta las siguientes reglas:

Ø Un nombre XML puede contener los siguientes caracteres:


Letras (A-Z, a-z), dígitos (0-9), guión bajo (_), guión (-) y punto (.)

Ø Debe empezar con una letra o guión bajo

Ø Puede usar dos puntos (:) sólo en namespaces

Ø No puede contener espacios en blanco

Copyright Formación y Soluciones Informáticas EFIBS S.A.


15

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Documento XML Bien Formado
Se dice que un documento XML está bien formado si cumple las
siguientes reglas:
Ø Todo tag debe tener su correspondiente tag final.
Ø Los elementos deben quedar debidamente anidados
Ø Debe haber exactamente un elemento raíz
Ø Los valores de los atributos deben estar entre comillas
Ø Un mismo elemento no debe tener más de un atributo con el
mismo nombre
Ø Los comentarios no deben colocarse dentro de los tags
Ø Los caracteres & y < deben ser precedidos por un \ si
forman parte de los datos de un elemento o atributo.

Validar un documento XML Con un Parser XML

Copyright Formación y Soluciones Informáticas EFIBS S.A.


16

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 XML – Ejercicio 1
¿Es el siguiente documento XML un documento bien formado?
<empleado>
<empleado nombre=“Juan” apellido=“Pérez” apellido=“Sánchez”>
<direccion calle=“López Peñalver”>
</empleado>
<Empleado nombre=“Alberto”>
<direccion calle=“López Peñalver”>
</Empleado>
<empleado>
<localidad>Málaga<localidad>
</Empleado>
</empleados>

<oficinas>
<oficina 1tlf=“951000000” 2tlf=“951000001”>
<ciudad>Madrid</ciudad>
</oficina>
<oficina>
<ciudad telefono=“12312312”>Barcelona</ciudad>
</oficina>
</oficinas>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


17

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 XML – Ejercicio 2
Crear un documento XML válido que contenga los siguientes datos:

Vuelo Origen Destino Salida Llegada


IB777 Málaga Madrid 8:00 8:50

IB888 Madrid Barcelona 9:00 10:10

IB999 Madrid Málaga 12:00 12:50

Código Avión Vuelos


1234 IB777,IB999

1122 IB888

Copyright Formación y Soluciones Informáticas EFIBS S.A.


18

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 XML - Namespaces
Ø Un XML namespace es una colección de nombres que pueden ser
usados en elementos o atributos.

Ø Un namespace distingue nombres de forma única en la Web,


para evitar conflictos.

Ø Un namespace puede ser identificado por una:

• URI (Universal Resource Identifier)


• URL (Uniform Resource Locator)
• URN (Uniform Resource Number)

Copyright Formación y Soluciones Informáticas EFIBS S.A.


19

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 XML – Namespaces - Declaración
Se declara con el atributo xmlns en el elemento deseado.
Existen dos tipos de declaración:

Ø Declaración por defecto. No hace falta usar prefijo, todos


los nombres pertenecen al namespace declarado:

<BOOK xmlns="urn:BookLovers.org:BookInfo">
<TITLE>A Suitable Boy</TITLE>
<PRICE currency="US Dollar">22.95</PRICE>
</BOOK>

Ø Declaración explícita. Cada nombre debe usar un prefijo


especificando el namespace al que pertenece:
<BOOKS>
<bk:BOOK xmlns:bk="urn:BookLovers.org:BookInfo"
xmlns:money="urn:Finance:Money">
<bk:TITLE>A Suitable Boy</bk:TITLE>
<bk:PRICE money:currency="US Dollar">22.95</bk:PRICE>
</bk:BOOK>
</BOOKS>
Copyright Formación y Soluciones Informáticas EFIBS S.A.
20

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Prólogo del Documento XML
Antes del elemento raíz del documento XML pueden aparecer una serie
de elementos, formando la siguiente estructura:

<?xml version="1.0"?> Declaración XML


<!--
Discos.xml, ejemplo de documento XML Comentarios
-->

<?xml-stylesheet href=“discos.xsl” type=“text/xml”?> Instrucciones de


procesamiento
<!DOCTYPE discos SYSTEM “discos.dtd">
Document Type
<discos> Declaration
....
</discos> Elemento raiz

Copyright Formación y Soluciones Informáticas EFIBS S.A.


21

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Prólogo del Documento XML
Declaración

Ø No es necesaria para que el documento sea bien formado


Ø Incluye los siguientes atributos:
Ø version: versión de XML
Ø encoding: codificación de los caracteres
Ø standalone: especifica si no es necesaria una validación por DTD

<?xml version="1.0" encoding="ISO-8859-1"?>

Comentarios

Ø Pueden aparecer en cualquier sitio excepto dentro de un tag

<!--
Discos.xml, ejemplo de documento XML
-->

Copyright Formación y Soluciones Informáticas EFIBS S.A.


22

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.3 Prólogo del Documento XML
Instrucciones de procesamiento

Ø Asocia el documento XML con algún elemento externo, como por


ejemplo una hoja de estilos xsl.

<?xml-stylesheet href=“discos.xsl” type=“text/xml”?>

Document Type Declaration

Ø Referencia a un DTD (Document Type Definition), el cual valida el


documento XML.

<!DOCTYPE discos SYSTEM “discos.dtd">

Copyright Formación y Soluciones Informáticas EFIBS S.A.


23

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

1.1 Introducción

1.2 Requerimientos

1.3 XML

1.4 DTDs
1.5 SAX

Copyright Formación y Soluciones Informáticas EFIBS S.A.


24

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTDs
Ø Un DTD (Document Type Definition) es un documento que
especifica las restricciones que debe cumplir un documento XML.

Ø Un documento válido es aquel que cumple las restricciones


especificadas en su DTD. Un documento es inválido si no las cumple
o simplemente no referencia a ningún DTD.

Ø Permite la declaración de tres tipos de estructuras:


Ø Elementos
Ø Atributos
Ø Entidades

Ø Debido a sus limitaciones se creó el lenguaje XML Schema.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


25

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTDs - Declaración
Un DTD se puede declarar de 2 formas:

• En un fichero aparte

<!DOCTYPE discos SYSTEM “discos.dtd">

• En el propio documento XML (en el prólogo):

<!DOCTYPE empleado
[
<!ELEMENT empleado (nombre, direccion)>
<!ELEMENT nombre (#PCDATA)>
<!ELEMENT direccion (ciudad, calle)>
<!ELEMENT ciudad (#PCDATA)>
<!ELEMENT calle (#PCDATA)>
]
>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


26

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de
Elementos - Atributos
Ø Un Elemento se declara especificando su nombre y los elementos
que lo componen:
<!ELEMENT empleado (nombre, direccion)>

Ø Si el elemento no contiene ningún otro elemento, se especifica el


tipo del valor que contiene
<!ELEMENT nombre (#PCDATA)>

Ø #PCDATA permite caracteres alfanuméricos


Ø Así, el siguiente documento XML sería válido para el DTD anterior:
<empleado>
<nombre>Antonio</nombre>
<direccion>
<ciudad>Málaga</ciudad>
<calle>Larios</calle>
</direccion>
</empleado>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


27

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de
Elementos - Atributos
Ø Si separamos con comas los elementos hijo, el orden de
aparición de éstos debe cumplirse

<!ELEMENT empleado (nombre, direccion)>

Ø Si separamos los elementos con una barra ( | ), con que


aparezca sólo uno de ellos ya se cumplirá la condición

<!ELEMENT empleado (nombre | direccion)>

Ø También pueden agruparse con paréntesis:

<!ELEMENT empleado ((nombre | apellido) , direccion)>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


28

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de
Elementos - Atributos
Modificadores

• Los siguientes modificadores especifican el número de elementos


que deben aparecer:
* 0 ó más

+ 1 ó más

? 0ó1

• Si no se muestra ningún modificador, debe aparecer


exactamente 1 elemento.

Ejemplos:

<!ELEMENT empleado (nombre , apellido? , direccion+)>

<!ELEMENT empleado (nombre , apellido , (direccion | telefono)*)>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


29

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de
Elementos - Atributos
Elementos Vacíos

• Si un elemento no contiene valor, se declara con la palabra EMPTY

<!ELEMENT direccion EMPTY>

Contenido ANY

• Si un elemento puede tener cualquier tipo de valor o de elementos


compuestos, se declara con la palabra ANY

<!ELEMENT otrosDatos ANY>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


30

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD - Ejercicio
Crear un DTD que valide la siguiente estructura:

<proveedores>
<proveedor>
<nombre>Pascal</nombre>
<productos>
<producto>Leche</producto>
<producto>Flan</producto>
</productos>
</proveedor>
<proveedor>
<nombre>Capitán Pesconovo</nombre>
<productos>
<producto>Merluza</producto>
</productos>
<telefono>
952888777
</telefono>
</proveedor>
</proveedores>
Copyright Formación y Soluciones Informáticas EFIBS S.A.
31

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD - Ejercicio
Crear un DTD que valide la siguiente estructura:

<clientes>
<cliente>
<nombre>Pascal</nombre>
<direccion>
<ciudad>Malaga</ciudad>
<calle>35</calle>
</direccion>
</cliente>
<cliente>
<nombre>Carlos Vega</nombre>
<direccion>
<ciudad>Esparza</ciudad>
</direccion>
<telefono>
636-65-85
</telefono>
</cliente>
</clientes>
Copyright Formación y Soluciones Informáticas EFIBS S.A.
32

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de Atributos
Ø Un elemento puede tener 1 o más atributos. Por ejemplo, para
declarar los atributos ciudad, calle y numero del elemento direccion, se
haría de la siguiente forma:

<!ATTLIST direccion
ciudad CDATA #FIXED <direccion ciudad=“Málaga” calle=“Larios”
calle CDATA #REQUIRED numero=“5”/>
numero CDATA #IMPLIED
>

Ø La expresión #REQUIRED indica que el atributo es obligatorio


Ø La expresión #IMPLIED indica que el atributo es opcional
Ø La expresión #FIXED indica que el atributo no es modificable
Ø La expresión CDATA es el tipo de dato (datos alfanuméricos)
Ø Se puede especificar un valor por defecto:
<!ATTLIST direccion pais CDATA “España”>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


33

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de Atributos
Tipos de atributos

Ø Enumeración. Limita los posibles valores del atributo.

<!ATTLIST empleado sexo (hombre | mujer) #REQUIRED>

Ø Tipos de atributos simple.


Ø CDATA. Caracteres alfanuméricos
Ø ID. Identificador único para un elemento.
Ø IDREF. Referencia a un número identificador contenido en el
atributo ID de algún otro elemento

<!ATTLIST empleado <empleado empid=“A120”>


empid ID #REQUIRED </empleado>
supervisor IDREF #IMPLIED <empleado empid=“A240” supervisor=“A120”>
> </empleado>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


34

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Declaración de Atributos
Ø Una entidad es una asociación entre el nombre de la entidad y su valor.
La entidad puede aparecer en el valor de un elemento o atributo, y será
sustituido por su valor.
Ø Hay 5 entidades predefinidas:
&lt; (<)
&amp; (&)
&gt; (>)
&quot; (")
&apos; (')

Ø Se pueden definir entidades nuevas:

<!ENTITY empresa “EFIBS">

y usarlas de la siguiente forma, utilizando punto y coma al final de la llamada

<empleado empresa=“&empresa;">

Copyright Formación y Soluciones Informáticas EFIBS S.A.


35

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Ejercicio
Crear un DTD que valide la siguiente estructura:
<libreria3>
<libro isbn="A912546874">
<autor>Miguel De Cervantes</autor>
<titulo>El Quijote</titulo>
<precio>18</precio>
</libro>

<libro isbn="A987564511">
<autor>Antonio Lopez</autor>
<autor>Ana Perez</autor>
<titulo>Cómo crecer</titulo>
<precio>25000</precio>
<rebaja>10%</rebaja>
<resumen fichero="ert34.doc" autor=“Roger Martinez"/>
</libro>
</libreria3>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


36

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.4 DTD – Ejercicio
Crear un DTD que valide la siguiente estructura:
<almacen empresa="&empresa;">
<productos>
<producto id="A191">
<nombre>Teclado</nombre>
<precio valor="20" moneda="euros"/>
<caracteristicas>15 pulgadas</caracteristicas>
</producto>

<producto id="A167">
<nombre>Monitor 14'</nombre>
<precio valor="20000" moneda="pesetas"/>
</producto>

<producto id="A180" nohay="A167">


<nombre>Monitor 15'</nombre>
<precio valor="20000" moneda="pesetas"/>
</producto>
</productos>
</almacen>
Copyright Formación y Soluciones Informáticas EFIBS S.A.
37

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

1.1 Introducción

1.2 Requerimientos

1.3 XML

1.4 DTDs

1.5 SAX

Copyright Formación y Soluciones Informáticas EFIBS S.A.


38

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.5 SAX

• SAX (Simple API for XML) es una API que permite a una
aplicación escribir código genérico que pueda funcionar con cualquier
parser

• SAX no es un parser en sí, sólo una capa entre una aplicación y un


parser

XML file XML parser SAX aplicación

Copyright Formación y Soluciones Informáticas EFIBS S.A.


39

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.5 SAX
• SAX, es el Simple API para XML, tiene la característica, a diferencia
de DOM, que ha sido hecho para leer rápidamente cadenas de los
documentos XML.

• Se hace más eficiente su manejo, cuando se requiere que se


empleen grandes fuentes de XML.

En el caso de SAX, la forma de crear un documento es la siguiente:

Por otra parte, para llamar al parser, se haría de la siguiente manera:

Copyright Formación y Soluciones Informáticas EFIBS S.A.


40

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.5 SAX

• SAX es un evento secuencial, basado en un parser XML. Representa


un documento XML el cual maneja la información pero en forma de
streams, los cuales podrán ser procesados por los programadores.

• SAX, no puede directamente modificar el documento de streams


que crea, por lo que se considera como de gran aporte solamente
para llevar a cabo lecturas únicamente.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


41

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.5 SAX Ejemplo

Copyright Formación y Soluciones Informáticas EFIBS S.A.


42

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
1.5 SAX Ejemplo

Copyright Formación y Soluciones Informáticas EFIBS S.A.


43

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

2. DOM

Copyright Formación y Soluciones Informáticas EFIBS S.A.


44

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

2. DOM

2.1 Introducción

2.2 DOM

Copyright Formación y Soluciones Informáticas EFIBS S.A.


45

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.1 Introducción

Qué es XML y qué elementos lo


El estándar XML
componen

Acceso a los datos de un documento


DOM
XML

Copyright Formación y Soluciones Informáticas EFIBS S.A.


46

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.1 Introducción
Ø El DOM (Document Object Model) es una API (Application Programming
Interface) creada para acceder a los datos de un documento XML.

Ø Muchos lenguajes tienen librerías que permiten acceder al DOM de un


documento XML mediante un parser.

Ø El estándar “Level 1 DOM” definido por el W3C es seguido, entre otros


navegadores, por Netscape 6 y Explorer 5.

Ø Al DOM de un documento XML puede accederse desde Javascript,


VBScript u otros lenguajes que lo soporten.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


47

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.1 Introducción
Ø DOM es muy flexible y genérico, además se puede hallar bastante
material en la W3C, lo cual permite mayor respaldo a la hora de la
representación sintáctica.

Ø El DOM presenta la desventaja del tiempo de respuesta y de la


cantidad de memoria invertida para el procesamiento, ya que muchas
de las instrucciones se hacen bastantes pesadas de procesar y a veces
difícil de entender.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


48

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

2. DOM

2.1 Introducción

2.2 DOM

Copyright Formación y Soluciones Informáticas EFIBS S.A.


49

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM
Ø Para poder hacer uso de la tecnología DOM, es necesario primero hacer
uso de dos clases en java fundamentales: DocumentBuilderFactory y
DocumentBuilder.

Ø La clase DocumentBuilderFactory posee un método estático que permite


obtener una implementación de la clase DocumentBuilderFactory.

Ø Una vez que tenemos la instancia de la Factory, creamos un DocumentBuilder


Utilizando el método estatico: newDocumentBuikder().

Copyright Formación y Soluciones Informáticas EFIBS S.A.


50

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM

Ø De esta forma invocamos al parser, el cual nos devuelve un objeto


de tipo Document
con el que obtendremos la información del archivo XML.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


51

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Acceso a Elementos
Ø La clase Document posee una serie de métodos útiles para obtener
información de los nodos que posee el documento XML.

Ø String getNodeName(): Nombre del Nodo o etiqueta actual.


Ø String getNodeType(): Tipo de la etiqueta

Ø String getNodeValue(): Valor de la etiqueta

Ø boolean hasAttributes(): ¿Tiene atributos?

Ø NamedNodeMap getAttributes(): Lista de atributos

Ø boolean hasChildNodes(): ¿Tiene hijos?

Ø NodeList getChilNodes(): Lista de hijos

Copyright Formación y Soluciones Informáticas EFIBS S.A.


52

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Acceso a Elementos
Ø Node getFirstChild(): devuelve el primer elemento hijo del elemento

Ø Node getLastChild(): devuelve el último elemento hijo del elemento.

Ø Node getNextSibling(): devuelve el siguiente elemento en la lista de


hijos del elemento padre, o null si es el último elemento.

Ø Node getPreviousSibling(): devuelve el anterior elemento en la lista


de hijos del elemento padre, o null si es el primer elemento.
Ø Node getParentNode(): devuelve el nodo padre de un elemento.

Ø getElementsByTagName(nombre): obtiene una lista de los


elementos encontrados con el nombre indicado. Busca de forma recursiva.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


53

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Métodos de la clase NodeList

Ø int getLength(): devuelve el número de nodos de la lista.

Ø Node item(int): devuelve el Nodo en la posición indicada.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


54

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Métodos de la
clase NamedNodeMap

Ø int getLength(): devuelve el número de nodos de la lista.

Ø Node item(int): devuelve el Nodo en la posición indicada.

Ø Node getNamedItem(String): devuelve el objeto nodo especificado en


el parámetro.

Ø Node removeNamedItem(String): eliminar el nodo atributo


especificado por el parámetro.

Ø Node setNamedItem(String): asigna un nuevo valor al atributo actual,


el nuevo valor se para por parámetro.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


55

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Métodos de la clase Node
Ø Node appendChild(): Inserta un nuevo elemento en el nodo.

Ø short getNodeType(): Devuelve el tipo de nodo, ya sea elemento,


texto, entidad o atributo.

Ø String getNodeName(): devuelve el nombre que le ha sido asignado a


ese nodo

Ø String getNodeValue(): devuelve el valor que le ha sido asignado a ese


nodo.

Ø void setNodeValue(String value): Inserta un valor en el nodo, si ya


tenia uno lo reemplaza

Copyright Formación y Soluciones Informáticas EFIBS S.A.


56

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Métodos de la clase Node

Ø Node removeChild(Node child): Elimina el nodo si existe, sino lanza


una excepción de tipo org.w3c.dom.DOMException

Ø Node replaceChild(Node oldNode, Node newNode): Reemplaza un


nodo por otro.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


57

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Ejercicio 1

Ø Ejercicio 1: Acceso a XML

Ø Ejercicio 1.1

Ø Crear un archivo java que muestre los siguientes datos:


• Mostrar el nombre del primer cliente
• Mostrar el idCliente del último cliente
• Mostrar el número de clientes
• Hacer un bucle que, para cada cliente, si tiene localidad que la
muestre, y si no, que muestre el mensaje “Sin localidad”

Copyright Formación y Soluciones Informáticas EFIBS S.A.


58

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Ejercicio 1

<XML ID="XMLCliente">
<clientes>
<cliente idCliente=“81422”>
<nombre>Antonio</nombre>
</cliente>
<cliente idCliente=“81555”>
<nombre>Jose Carlos</nombre>
<localidad>San Salvador</localidad>
</cliente>
</clientes>
</XML>

Copyright Formación y Soluciones Informáticas EFIBS S.A.


59

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Modificación de Elementos
Creación de un elemento
Para esto utilizamos los métodos de la clase Document

Ø getElementsByTagName(nombre): obtiene una lista de los elementos


encontrados con el nombre indicado. Busca de forma recursiva.

Ø createElement(nombre): Crea un elemento con el nombre especificado

Ø createTextNode(nombre): Crea un objeto Text que debe ser insertado en


un elemento.

Ø Para agregar el nuevo elemento al nodo se utiliza el método


appendChild(Node nodo)

Copyright Formación y Soluciones Informáticas EFIBS S.A.


60

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Modificación de Elementos

Creación de un elemento

El siguiente código inserta el elemento precio con el valor 15 al primer


articulo:
NodeList nodeList =
document.getElementsByTagName("articulo");
Node node = nodeList.item(0);
if(node.getNodeType() == Node.ELEMENT_NODE){
Element apellido = document.createElement(“precio");

Text texto = document.createTextNode(“15");

apellido.appendChild(texto);

node.appendChild(apellido);
}

Copyright Formación y Soluciones Informáticas EFIBS S.A.


61

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Modificación de Elementos

Eliminación de un elemento

Ø removeChild(objeto): elimina el objeto especificado


La siguiente instrucción elimina el último artículo de la primer lista de
artículos:
NodeList listaActual =
document.getElementsByTagName("articulos");

NodeList listaEliminar =
document.getElementsByTagName("articulo");

Node nodoActual = listaActual.item(0);

Node nodoEliminar =
listaEliminar.item(listaActual.getLength()-1);

document.removeChild(nodoEliminar);

Copyright Formación y Soluciones Informáticas EFIBS S.A.


62

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Modificación de Elementos
Cambiar el valor de un elemento

La siguiente sentencia modifica el precioVenta del producto por el PVP:

NodeList lista =
document.getElementsByTagName("producto");

Node node = lista.item(1);

NodeList listaHijos= node.getChildNodes();

Node nodoHijo = listaHijos.item(1);

Element nuevaLocalidad = document.createElement("PVP");

Text texto = document.createTextNode("25");

nuevaLocalidad.appendChild(texto);

node.replaceChild(nuevaLocalidad,nodoHijo);

Copyright Formación y Soluciones Informáticas EFIBS S.A.


63

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Modificación de Atributos
Cambio de valor de un atributo
Ø setAttribute(nombre,valor): si el atributo especificado existe, cambia su
valor, si no, crea uno nuevo y le asigna el valor especificado.
El siguiente ejemplo crea el atributo o lo modifica si existe de idProducto del
ultimo producto a 12345:

NodeList nodeList = document.getElementsByTagName("producto");

Node node = nodeList.item(nodeList.getLength()-1);

if(node.getNodeType() == node.ELEMENT_NODE){

Element element = (Element)node;

element.setAttribute(“idProducto",“12345");

Copyright Formación y Soluciones Informáticas EFIBS S.A.


64

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Modificación de Atributos
Eliminación de un atributo

Ø removeAttribute(nombre): elimina de un nodo el atributo con el


nombre especificado.
Este ejemplo borra el atributo “idProducto” creado en la sentencia anterior:

NodeList nodeList = document.getElementsByTagName(“producto");

Node node = nodeList.item(0);

if(node.getNodeType() == node.ELEMENT_NODE){

Element element = (Element)node;

element.removeAttribute("idCliente");

Copyright Formación y Soluciones Informáticas EFIBS S.A.


65

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.2 DOM – Ejercicio 2
Ejercicio 2: Modificación de XML

Ejercicio 2.1

Ø Modificar el archivo anterior para que haga lo siguiente:

• Añadir la etiqueta “localidad” al primer cliente con el valor


“Málaga”
• Añadir una etiqueta “apellido” al último cliente con el valor
“Martín”
• Eliminar el primer cliente
• Cambiar el nombre del último cliente por “Jorge”.
• Cambiar el atributo “idCliente” del ultimo cliente por “123456”.
• Añadir el atributo “edad” al primer cliente y darle por valor “25”.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


66 66

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.3 Crear XML en base al árbol DOM
• Para crear un documento XML en base al árbol que DOM genera en
memoria se necesita un objeto Transformer.

Este Objeto se crea en base a un objeto TransformerFactory.

Ejem.:

TransformerFactory factory;
factory = TransformerFactory. newInstance();

Transformer trans = transFactory.newTransformer();

Copyright Formación y Soluciones Informáticas EFIBS S.A.


67 67

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.3 Crear XML en base al árbol DOM
• Una vez que tenemos el objeto Tranformer, debemos crear un objeto
DOMSource al cual se le indica el objeto Document (raíz) con el árbol
generado por DOM.

Ejm.:
DOMSource source = DOMSource(document);

• Además se debe crear el archivo en el cual se almacenara la


estructura del árbol DOM que se encuentra en memoria.
Ejm.:
File file = new File (RUTA_FISICA);
FileOutputStream fos = new FileOutputStream (file);

Copyright Formación y Soluciones Informáticas EFIBS S.A.


68 68

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.3 Crear XML en base al árbol DOM
• Seguidamente debemos crear un objeto StreamResult, el cual vamos
asociar con el archivo de salida para el futuro XML.
Ejm.:
StreamResult streamResult = new StreamResult(fos);

• Finalmente le indicamos al objeto Tranformer que guarde en disco el


árbol DOM en el archivo especificado por StreamResult.

Ejm.:
transformer.transform(source,streamResult);

Copyright Formación y Soluciones Informáticas EFIBS S.A.


69 69

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
2.3 Ejercicio
Ejercicio 1:

Ø Modifique en memoria el archivo anterior de clientes y envié a


guardar en disco un archivo XML con las modificaciones realizada.

Ø Compare el archivo resultante con el original.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


70 70

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

1. El Estándar XML

2. DOM

Copyright Formación y Soluciones Informáticas EFIBS S.A.


71

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
Curso XML en Tecnologías J2EE

Anexo

Copyright Formación y Soluciones Informáticas EFIBS S.A.


72

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM

Ø La diferencia con DOM y SAX, es que JDOM es un modelo más fácil de


utilizar por parte del programador.

Ø Está hecho en Java, es el Java Document Object Model.

Ø JDOM, hace una mejor representación de un documento XML a nivel


de objetos en Java.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


73

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM

Ø Implementa del 80%-90% de la funcionalidad de DOM.

Ø Tiene la característica que es de fácil integración con SAX.

Ø Actualmente JDOM, está constantemente evolucionando, ya que está


relacionado con Apache Groups Xerces.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


74

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø JDOM, hace uso de menos requerimientos de memoria que el
genérico DOM.

Ø JDOM, cuenta con un conjunto de métodos más simples que DOM y


SAX para recuperar la información.

Ø Tiene problemas de memoria cuando procesa archivos grandes.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


75

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø El API está formado por 5 packages.

Ø El package org.jdom Clases:

Document representa el documento XML.

Element representa el elemento o etiqueta que forma el


documento.

Attribute representa los atributos que puedan tener los elementos.


Ø El package org.jdom.adapters albergará las clases adaptadoras ya
que no todos los parsers DOM tienen la misma API.
Ø El package org.jdom.input albergara las clases builder para construir
los documentos XML.
Ø El package org.jdom.output albergara las clases que utilizaremos
para dar salida a una clase Document.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


76

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Para construir un objeto Document son JDOM, necesitamos realizarlo
desde un parser de SAX o DOM, para esto empleamos las clases
SAXBuilder o DOMBuilder.

Ø Se recomienda realizarlo atravez del parser de SAX, ya que es mas


rápido y consume menos recursos.

Ejm.:

SAXBuilder builder = new SAXBuilder();

Document doc = builder. build(ARCHIVO_XML);

Con lo anterior obtenemos una instancia de Document con lo cual ya


podemos empezar a manipular el archivo XML.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


77

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø a través del objeto Document podemos obtener la raíz del XML,
utilizando el método getRootElement() este método nos retorna un
objeto Element representando la raíz.
Ø Podemos crear elementos de una manera muy simple.

Element elemento = new Element(“root”);

elemento.setText(“Es es el elemento raiz”);

document.addContent(elemento);

Copyright Formación y Soluciones Informáticas EFIBS S.A.


78

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Clase Element

Ø Posee algunos métodos de interés.

String getText() Capturar el texto de una etiqueta o elemento.

List getChildren() Coger todos los elementos que cuelgan del


Element.

List getChildren(String nombre) Coger todos los elementos que


tengan ese nombre.

List getMixedContent() Para recuperar todo(comentarios, PIs,


elementos,etc).

Boolean removeChild(String hijo) Remueve los hijo que coincidan


con el parámetro, retorna true si logro remover el hijo, false en caso
contrario.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


79

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Clase Element, continua….

Ø Posee algunos métodos de interés.

Element getChild (String nombre) Coger el primer hijo que tenga


ese nombre.
Element
String getAttributeValue(String nombre) Coger el valor del atributo
que pasamos como parámetro.

Attribute getAttribute(String nombre) Coger el atributo que tenga


ese nombre.

Element addContent(Content nuevoHijo) Añade un hijo al elemento


con el que se llamo el método.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


80

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Clase Attribute

Ø Podemos obtener los atributos de un elemento utilizando el método


getAttributeValues(String nombre) de la clase Element.
Ø De igual manera podemos eliminar un atributo en especifico utilizando
el metodo removeAttribute(String nombre).
Ø Así mismo se puede asignar un nuevo valor a un atributo con el
metodo setAttribute(String nombre, String valor).
Ø Con la instrucción getAttributes().clear() se eliminan todos los
atributos de un elemeneto.

Ø Nota: Todos los metodos anteriores pertenecen a la clase


Element.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


81

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Clase Attribute

Ø String getValue() Capturar el valor de la etiqueta.

Ø String getName() Obtiene el nombre de la etiqueta Attributes.

Ø void setName(String name) Asigna un nuevo nombre a la etiqueta


atributo.
Ø void setValue(String value) Asigna un nuevo valor a la etiqueta
atributo.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


82

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Escribir un XML a Disco

Ø Para almacenar la información de un árbol XML a disco utilizando


JDOM, es necesario, utilizar la clase XMLOutputter.

Ø Ejm.:

Ø XMLOutputter out = new XMLOutputter();

Ø File file = new File(ARCHIVO);

Ø FileWriter fw = new FileWriter(file);

Ø out.output(document,fw);

Ø fw.close();

Copyright Formación y Soluciones Informáticas EFIBS S.A.


83

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.
JDOM
Ø Ejercicio Practico

Ø Utilizando JDOM, lea el archivo de clientes y realice las siguientes


modificaciones.
Ø Añada un nuevo cliente con el valor del nombre de Pedro.

Ø Incluya una nueva localidad para el 1er cliente.

Ø Agregue la etiqueta teléfono a ambos clientes.

Ø Cambie el atributo id de ambos clientes.

Ø Elimine el 1er cliente.

Ø Muestre las modificaciones por pantalla y cree un archivo XML nuevo


con las modificaciones realizadas al archivo de clientes.

Copyright Formación y Soluciones Informáticas EFIBS S.A.


84

Created by PDF Generator (http://www.alientools.com/), to remove this mark, please buy the software.

Você também pode gostar