Download Manejo de documentos XML en MHP
Document related concepts
no text concepts found
Transcript
MANEJO DE DOCUMENTOS XML EN
MHP
Leire Urriza Oiz
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.2
Origen y comparación con HTML (1/3)
XML (eXtensible Markup Language) significa
lenguaje de marcas generalizado
Es un metalenguaje lenguaje compuesto por
elementos descriptivos que sirve para definir
lenguajes
• Conjunto de reglas para definir etiquetas necesarias para
organizar un documento.
Uso: Estructurar información en un documento
Basado en el estándar SGML creado por IBM
• Se derivan HTML y XML
– HTML orientado a la presentación de datos
– XML orientado a los datos en sí mismos
• HTML y XML son complementarios
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.3
Origen y comparación con HTML (2/3)
Código HTML
Código XML
<h1>Comedor</h1>
<ul>
<li>
<b>Mesa redonda de madera de
arce</b>.
El fabricante es <i>Muebles
Albacete</i> y su precio 40000.
</li>
<li>
<b>Dos sillas de madera de
arce</b>, de excelente
calidad, con un cojín
azul cada una.
</li>
<li>
<b>3 sillas de madera de
roble</b>.
</li>
</ul>
18/10/2006
<comedor>
<mesa tipo="redonda" madera="arce">
<fabricante>Muebles
Albacete</fabricante>
<precio>40000</precio>
</mesa>
<silla madera="arce">
<cantidad>2</cantidad>
<calidad>excelente</calidad>
<cojin incluido="sí">
<color>azul</color>
</cojin>
</silla>
<silla madera="roble">
<cantidad>3</cantidad>
<calidad>normal</calidad>
</silla>
</comedor>
E.T.S de Ingenieros de Telecomunicación
.4
Origen y comparación con HTML (3/3)
Código HTML
Código XML
Orientado a la presentación de
datos
Define:
Conjunto de etiquetas y atributos
válidos
Utilización válida de estos
elementos
Significado visual para cada
elemento del lenguaje
Sirve para presentar información
en páginas web
Orientado a los datos en si
mismos
No define:
Etiquetas ni cómo se utilizan
Define:
Reglas sintácticas para crear
documentos (es un
metalenguaje)
Sirve para representar e
intercambiar datos
independientemente de su
presentación
HTML y XML son complementarios
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.5
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.6
Principales usos de XML
XML aplicado a sitios web
Permite separar contenido y presentación
Los mismos datos se pueden mostrar de distintas
formas sin demasiado esfuerzo
XML para la comunicación entre aplicaciones
Representación de los datos muy simple y fácil de
transmitir por la red
XML para la configuración de programas
Representación de los datos simple y estándar.
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.7
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.8
Estructura de un documento XML (1/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.9
Estructura de un documento XML (2/8)
Declaración de un documento XML
Para crear un documento XML solo se necesita:
Un procesador de textos
Guardar el documento con extensión .xml
Para identificar un fichero como XML, la primera línea
del documento debe ser:
<?xml version="1.0" encoding="iso-8859-1" standalone="yes"?>
donde:
version versión de XML usada en el documento. La actual es
la versión 1.0.
encoding forma en que se ha codificado el documento.
• Por defecto: UTF-8 alfabeto Unicode
• Para documentos en español mejor ISO-8859-1 alfabeto latin-1
standalone indica si el documento va acompañado de un
DTD (“no”) o no lo necesita (“yes”). No hay porqué ponerlo ya
que luego se indica el DTD si se necesita.
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.10
Estructura de un documento XML (3/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.11
Estructura de un documento XML (4/8)
Sintaxis
Aspectos a tener en cuenta:
Sensibilidad a las MAYÚSCULAS se diferencia entre
MAYÚSCULAS y minúsculas.
Existen 5 caracteres especiales que forman parte de la sintaxis
de XML:
•
•
•
•
•
Menor que <, para representarlo usar la entidad <
Mayor que >, para representarlo usar la entidad ≶
Ampersand &, para representarlo usar la entidad &
Dobles comillas “, para representarlo usar la entidad "
Apóstrofe ‘, para representarlo usar la entidad '
& es un carácter especial que se usa para representar
entidades:
• Entidad: carácter adicional que no forma parte del alfabeto usado
por defecto en el texto.
– Comienza por & seguido del nombre de la entidad e inmediatamente
un punto y coma.
Los valores de los atributos de todas las etiquetas deben ir
siempre entrecomillados (“ o ‘)
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.12
Estructura de un documento XML (5/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.13
Estructura de un documento XML (6/8)
Contenido
Un documento XML está compuesto por elementos que
se representan mediante etiquetas:
Elementos son las entidades en sí, lo que tiene contenido
• Vacíos: no tienen contenido dentro del documento
• No vacíos
Etiquetas describen a los elementos. Es deseable que sus
nombres no contengan ni espacios ni caracteres especiales.
• Toda etiqueta no vacía debe tener una etiqueta de cerrado
<etiqueta>contenido de la etiqueta</etiqueta>
• Orden jerárquico
<UPNA><departamento>Ingeniería Eléctrica y Electrónica</UPNA></departamento>
<UPNA><departamento>Ingeniería Eléctrica y Electrónica</departamento></UPNA>
• Pueden contener atributos
<UPNA><departamento id ='1'>Ingeniería Eléctrica y Electrónica</departamento></UPNA>
• La decisión entre especificar
– Elemento descendiente
– Atributos
queda a discreción del diseñador
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.14
Estructura de un documento XML (7/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.15
Estructura de un documento XML (8/8)
Ejemplo
<?xml version="1.0" encoding="iso-8859-1" ?>
<servicio>
<evento id = '1'>
<titulo>Novela: Felisinda (Capítulo 550). Capítulo repetido por fallos en el
sistema</titulo>
<horaInicio>Hora inicio: 15:30h</horaInicio>
<horaFin>Hora fin: 16:30h</horaFin>
<resumen>RESUMEN: En el capitulo de hoy Felisinda no puede reprimir la tentacion de
usurpar el sillón de su jefe. Esto traerá consecuencias que ni ella misma
imagina...</resumen>
<video>
<rectanguloOrigen>
<x>0</x>
<y>0</y>
<ancho>720</ancho>
<alto>576</alto>
</rectanguloOrigen>
<rectanguloDestino>
<x>50</x>
<y>320</y>
<ancho>280</ancho>
<alto>200</alto>
</rectanguloDestino>
<localizadorDestino>dvb://1.3.1.65</localizadorDestino>
</video>
<audio dvb = '1'>
<localizadorDestino>dvb://1.3.1.68</localizadorDestino>
</audio>
</evento>
</servicio>
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.16
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.17
Definición del tipo de documento (DTD) (1/6)
DTD (Document Type Definition)
Define:
• Elementos que puede incluir un documento XML
• Forma en que deben hacerlo (qué elementos van dentro de
otros)
• Atributos que se les pueden dar
Existen dos formas de referenciar un DTD en un
documento XML:
• Referencia en forma de URL
• DTD dentro del propio documento XML
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.18
Definición del tipo de documento (DTD) (2/6)
Referencia en forma de URL
Ejemplo:
<!DOCTYPE servicio SYSTEM "http://www.dat.etsit.upm.es/~abarbero/DTD/servicio.dtd">
donde:
Se usa la declaración <!DOCTYPE
Nombre del documento nombre del elemento raíz
del documento XML
Palabra SYSTEM indica que el DTD se obtendrá a
partir de un elemento externo
URL en la que se encuentre el DTD entrecomillada
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.19
Definición del tipo de documento (DTD) (3/6)
DTD (Document Type Definition)
Define:
• Elementos que puede incluir un documento XML
• Forma en que deben hacerlo (qué elementos van dentro de
otros)
• Atributos que se les pueden dar
Existen dos formas de referenciar un DTD en un
documento XML:
• Referencia en forma de URL
• DTD dentro del propio documento XML
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.20
Definición del tipo de documento (DTD) (4/6)
DTD dentro del propio XML (1/3)
Ejemplo:
Nombre elemento
Elementos descendientes
<?xml version="1.0"?>
<!DOCTYPE servicio [
<!ELEMENT evento (imagenTitulo?,titulo?,horaInicio?,horaFin?,resumen?,video,audio?)>
<!ATTLIST evento id CDATA #REQUIRED>
obligatorio
<!ELEMENT imagenTitulo (#PCDATA)>
Definir
<!ELEMENT titulo (#PCDATA)>
Opcional pero
<!ELEMENT horaInicio (#PCDATA)>
elemento
Tipo de datos
singular
Nombre atributo
Posibles valores del
Definir <!ELEMENT horaFin (#PCDATA)>
atributo o CDATA
atributo<!ELEMENT resumen (#PCDATA)>
<!ELEMENT video (rectanguloOrigen?,rectanguloDestino?,localizadorDestino?)>
<!ELEMENT rectanguloOrigen (x?,y?,ancho?,alto?)>
<!ELEMENT x (#PCDATA)>
Nombre del elemento
del que se declara
el atributo
<!ELEMENT y (#PCDATA)>
<!ELEMENT ancho (#PCDATA)>
<!ELEMENT alto (#PCDATA)>
<!ELEMENT rectanguloDestino (x?,y?,ancho?,alto?)>
<!ELEMENT x (#PCDATA)>
<!ELEMENT y (#PCDATA)>
<!ELEMENT ancho (#PCDATA)>
<!ELEMENT alto (#PCDATA)>
<!ELEMENT localizadorDestino (#PCDATA)>
<!ELEMENT audio (localizadorDestino?)>
<!ATTLIST audio dvb CDATA #REQUIRED>
<!ELEMENT localizadorDestino (#PCDATA)>
]>
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.21
Definición del tipo de documento (DTD) (5/6)
DTD dentro del propio XML (2/3)
Se usa la sentencia <!DOCTYPE pero en vez de la URL se incluye
el propio DTD entre los símbolos ‘[’ y ’]’ (todo lo que hay entre ellos
se considera parte del DTD)
Notas:
Para definir un elemento se usa la declaración <!ELEMENT seguida
del nombre del elemento y entre paréntesis:
• Tipo de datos que contiene (#PCDATA, para alfanumérico)
• Elementos descendientes:
– Caracteres especiales:
»
»
»
»
+ obligatorio y múltiple
* opcional y múltiple
? opcional pero singular
| un elemento y solo uno de entre los que forman la expresión
Para definir un atributo se usa la declaración <!ATTLIST seguida de:
• Nombre del elemento del que se está declarando el atributo
• Nombre del propio atributo
• Posibles valores del atributo (separados por |) o CDATA para indicar
cualquier valor
• Valor por defecto entrecomillado (opcional)
• #REQUIRED (obligatorio), #IMPLIED (no obligatorio), #FIXED (fijo)
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.22
Definición del tipo de documento (DTD) (6/6)
DTD dentro del propio XML (3/3)
Ejemplo de XML que cumpliría el DTD anterior:
<servicio>
<evento id = '1'>
<titulo>Novela: Felisinda (Capítulo 550). Capítulo
repetido por fallos en el sistema</titulo>
<horaInicio>Hora inicio: 15:30h</horaInicio>
<horaFin>Hora fin: 16:30h</horaFin>
<resumen>RESUMEN: En el capitulo de hoy Felisinda no puede
reprimir la tentacion de usurpar el sillón de su jefe.
Esto traerá consecuencias que ni ella misma
imagina...</resumen>
</evento>
</servicio>
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.23
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.24
Tipos de documentos XML
Existen dos tipos de documentos XML:
Bien formados
• Cumplen especificaciones del lenguaje (reglas sintácticas)
• No están sujetos a unos elementos fijados en un DTD
Válidos
• Están bien formados (cumplen reglas sintácticas)
• Siguen estructura y semántica determinada por un DTD
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.25
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.26
Utilización de XML en el ámbito de MHP (1/7)
Tres campos de actividad en los cuales XML
juega un papel importante:
En la propia norma MHP
En la caracterización de la metainformación de
contenidos
En el ámbito de la implementación de aplicaciones
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.27
Utilización de XML en el ámbito de MHP (2/7)
En la propia norma MHP
En la propia norma MHP:
Frecuentemente el intercambio de información entre
entidades se resuelve usando aplicaciones XML que
estructuran los datos a enviar.
• Solicitud de permisos fichero XML en el que se relacionan
todos los componentes que es necesario almacenar
• Almacenamiento local de aplicaciones fichero XML en el
que se relacionan todos los componentes que es necesario
almacenar
• Interactividad con aplicaciones descargadas (acceso a
Internet a través de TV, “super-teletexto”…) usan dos
aplicaciones XML para implementación del envío de
mensajes de sincronización.
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.28
Utilización de XML en el ámbito de MHP (3/7)
Tres campos de actividad en los cuales XML
juega un papel importante:
En la propia norma MHP
En la caracterización de la metainformación de
contenidos
En el ámbito de la implementación de aplicaciones
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.29
Utilización de XML en el ámbito de MHP (4/7)
En la caracterización de la metainformación de
contenidos
En la caracterización de la metainformación de
contenidos:
En el ámbito de TV Digital, el proyecto mas
significativo es el promovido por el foro TV-Anytime
El incremento desmesurado de contenidos y la
dificultad de encontrar lo que se busca desarrollo
de mecanismos para caracterizar contenidos y
permitir referenciarlos independientemente de su
localización y fecha de emisión.
• El objetivo principal es separar la información que describe a
los contenidos de aquella otra necesaria para su adquisición
e independizar todo esto del mecanismo de transporte
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.30
Utilización de XML en el ámbito de MHP (5/7)
Tres campos de actividad en los cuales XML
juega un papel importante:
En la propia norma MHP
En la caracterización de la metainformación de
contenidos
En el ámbito de la implementación de aplicaciones
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.31
Utilización de XML en el ámbito de MHP (6/7)
En el ámbito de la implementación de aplicaciones (1/2)
En el ámbito de la implementación de
aplicaciones:
La estructura de información modelada mediante las
aplicaciones XML puede abarcar desde los
elementos descriptores de la red de difusión hasta los
componentes de las aplicaciones interactivas
disponibles en cada canal de televisión. Por ejemplo:
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.32
Utilización de XML en el ámbito de MHP (7/7)
En el ámbito de la implementación de aplicaciones (2/2)
Limitando la descripción a las entidades más
importantes, se puede otorgar el papel de
elemento raíz del sistema a la entidad “red de
difusión”.
Este elemento estaría compuesto por varios flujos de
transporte.
• Cada flujo de transporte, a su vez, estaría formado por los
diferentes servicios (canales de televisión)
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.33
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.34
¿Qué es un parser?
El parser es para XML como un sistema operativo a una computadora:
IMPRESCINDIBLE
Herramienta utilizada para procesar cualquier documento, estructura o
fragmento en XML
Realiza el trabajo sucio:
• Detectar principio y fin de un elemento
• Gestionar espacios de nombres
• Comprobar que el documento está bien formado
El diseñador de aplicaciones sólo debe concentrarse en aspectos específicos de
la aplicación
Existen diversos parsers para diversos lenguajes información residente
en XML puede ser procesada en un ambiente de programación específico,
en nuestro caso invocando métodos en Java
Pasar un documento XML a clases de Java es un proceso de parsing.
Cuando se procesa cualquier información XML, lo primero es comprobar si
está bien formada y luego, si incluye referencia a un DTD, comprobar que
sigue sus reglas gramaticales. Hay pues diferencia entre los parsers:
Parsers no validadores no comprueban si se siguen reglas de un DTD
Parsers validadores comprueban que se atiende a un DTD y es válido
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.35
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.36
Metodologías de manipulación de
documentos XML (1/2)
El W3C (World Wide Web Consortium) ha especificado
dos mecanismos para acceder a documentos XML y
trabajar con ellos.
SAX (Simple API for XML)
• Se utiliza para hacer un recorrido secuencial de los elementos del
documento XML
DOM (Document Object Model)
• Implica la creación de un árbol en memoria que contiene el
documento XML y así, con él en memoria, poder hacer cualquier
tipo de recorrido y acciones con los elementos que se desee
En el caso de Java, SUN Microsystems provee las API’s
para que los desarrolladores cuenten con las clases
necesarias para programar con XML
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.37
Metodologías de manipulación de
documentos XML (2/2)
API’s existentes en Java para trabajar con
documentos XML:
SAX (Simple API for XML)
• Introducción a SAX
• El parser SAX
DOM (Document Object Model)
• Introducción a DOM
• El parser DOM
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.38
Introducción a SAX
API SAX es el primer punto de unión del mundo XML con el mundo
de la programación en general, y en particular con Java
Principales características:
El documento se lee secuencialmente de principio a fin
SAX procesa la información en XML conforme esta sea presentada
(evento por evento), manipulando cada elemento en un determinado
instante, sin incurrir en un uso excesivo de memoria.
No se carga todo el documento en memoria
Ventajas:
Sencillo y rápido de utilizar
Eficiencia en cuanto al tiempo y la memoria empleados en el sistema
• Ideal para manipular documentos XML de gran tamaño
Desventajas:
No se dispone de la estructura en árbol de los documentos XML
No se puede recorrer jerárquicamente, solo análisis secuencial
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.39
Metodologías de manipulación de
documentos XML (2/2)
API’s existentes en Java para trabajar con
documentos XML:
SAX (Simple API for XML)
• Introducción a SAX
• El parser SAX
DOM (Document Object Model)
• Introducción a DOM
• El parser DOM
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.40
El parser SAX
Para poder trabajar con documentos XML mediante SAX
es necesario un parser SAX
Uso de SAX desde Java:
Conseguir clases que componen el parser
Incluir estas clases en la ruta de clases
Muchos parsers en el mercado
Xerces para Java de Apache
No ha sido el parser utilizado en el presente proyecto.
• Gran tamaño inviable en el entorno de la televisión digital.
– Hay que incluir la librería del parser al generar el transport stream
En el presente proyecto, se ha optado por usar el parser
NanoXML.
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.41
Metodologías de manipulación de
documentos XML (2/2)
API’s existentes en Java para trabajar con
documentos XML:
SAX (Simple API for XML)
• Introducción a SAX
• El parser SAX
DOM (Document Object Model)
• Introducción a DOM
• El parser DOM
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.42
Introducción a DOM
La API DOM constituye un paso más allá en el uso de XML desde
un lenguaje de programación, y en particular desde Java
Principal característica:
El documento se carga entero en memoria en una estructura de árbol
Ventajas:
Se puede acceder a los datos en función de la jerarquía de los
elementos
Se puede agregar un nodo (información) en cualquier punto del árbol
Se puede eliminar información de un nodo en cualquier punto del árbol
Se pueden crear documentos desde cero
Desventajas:
Coste (en tiempo y memoria) que conlleva construir el árbol para un
documento, sobre todo si tiene cierto tamaño
• Ideal para manipular documentos XML de poco tamaño
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.43
Metodologías de manipulación de
documentos XML (2/2)
API’s existentes en Java para trabajar con
documentos XML:
SAX (Simple API for XML)
• Introducción a SAX
• El parser SAX
DOM (Document Object Model)
• Introducción a DOM
• El parser DOM
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.44
El parser DOM
Para poder trabajar con documentos XML mediante
DOM es necesario un parser DOM (se suele apoyar en
un parser SAX)
Uso de DOM desde Java:
Conseguir clases que componen el parser
Incluir estas clases en la ruta de clases
Muchos parsers en el mercado
Xerces para Java de Apache
• El mismo que se comentó en SAX pero importando las clases
oportunas para trabajar con DOM
No ha sido el parser utilizado en el presente proyecto.
• Gran tamaño inviable en el entorno de la televisión digital.
– Hay que incluir la librería del parser al generar el transport stream
En el presente proyecto, se ha optado por usar el parser
NanoXML.
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.45
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.46
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.47
Introducción a NanoXML
Aparición en abril de 2000
Propósito:
Ser un pequeño parser fácil de usar
• Parsers SAX y DOM eran demasiado complejos para ciertas
necesidades y, o bien eran demasiado grandes o tenían una
licencia muy restrictiva
Versión 1 de NanoXML
Muy pequeño (unos 6K)
Razonablemente rápido para documentos XML
pequeños
Sencillo de usar
Gratis
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.48
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.49
NanoXML 2
Aparición en junio de 2001
Aunque le fueron añadidas bastantes características respecto a la
versión 1, seguía siendo muy pequeño (unos 32K)
Existen tres implementaciones de NanoXML 2
NanoXML/Lite
• Sucesor de NanoXML 1
• Funcionalidad limitada
– No soporta contenidos mezclados
– Se ignora el DTD
• Las clases de este parser se encuentran en el paquete nanoxml
NanoXML/Java
• Es el parser estándar
• Funcionalidad amplia
– Permite crear, modificar y validar documentos+
• Las clases de este parser se encuentran en el paquete net.n3.nanoXML
NanoXML/SAX
• Es el adaptador SAX para NanoXML/Java
• Las clases de este parser se encuentran en el paquete net.n3.nanoXML.sax
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.50
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.51
Análisis de un documento XML con NanoXML
El análisis de un documento XML mediante el
parser NanoXML se puede dividir en dos partes:
Una primera parte consistente en cargar el
documento XML desde su ubicación en el Object
Carousel y analizarlo.
Una segunda parte consistente en acceder y
analizar los datos del árbol creado en la primera
parte
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.52
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.53
Carga de un documento XML
Pasos a seguir para cargar un documento XML desde el Object
Carousel
Crear el parser XML
IXMLParser procesador = XMLParserFactory.createDefaultXMLParser();
Crear el reader estándar que leerá los datos desde el documento XML
y alimentar con él el parser. Normalmente se puede usar un
StdXMLReader para alimentar el parser con los datos.
IXMLReader lector = StdXMLReader.fileReader("teletexto.xml");
procesador.setReader(lector);
Hacer que el parser XML analice los datos leídos desde el documento
XML y cree un árbol con estos elementos analizados.
IXMLElement xml = (IXMLElement) procesador.parse();
Una vez hecho esto, si se invocara al método getName() de la instancia
xml anterior, se obtendría el nombre del primer tag del documento
XML.
String nombrePrimerTag = xml.getName();
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.54
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.55
Acceso y análisis de contenido
Esta parte no es tan mecánica, sino que dependerá de lo que el
programador necesite
La tarea de recorrer el árbol no es difícil
El StdXMLBuilder (constructor interno invocado al hacer
createDefaultXMLParser()) genera un árbol de objetos IXMLElement. Cada
uno de estos objetos:
Tiene un nombre
Puede tener atributos
Puede tener:
• Contenido
• IXMLElement (elementos descendientes, hijos)
A continuación se explicará la forma de acceder a cada uno de estos
contenidos teniendo en cuenta que estas acciones irán incluidas,
normalmente, dentro de sentencias for, while, if/else, switch, que harán que
la forma de extraer la información de los tags sea más útil para la
aplicación.
Más información estudio más detallado y en profundidad del paquete
net.n3.nanoxml para sacar el máximo partido al parser NanoXML.
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.56
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.57
Acceso al nombre de un IXMLElement
Para obtener el nombre de un IXMLElement
Un IXMLElement no es más que cada uno de los tags
que componen el documento XML.
hay que invocar al método getName() del propio
IXMLElement.
IXMLElement elemento;
String nombreElemento = elemento.getName();
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.58
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.59
Acceso a un atributo de un IXMLElement
Los pasos a seguir para acceder al contenido de un
atributo de un IXMLElement son los siguientes:
Invocar al método enumerateAttributeNames() del IXMLElement
para obtener una lista con los posibles atributos que contiene el
IXMLElement. Después, invocando al método nextElement() de
la lista se va accediendo a los elementos de la lista.
IXMLElement elemento;
Enumeration lista = elemento.enumerateAttributtesNames()
Object nombreAtributo = lista.nextElement();
Invocar al método getAttribute() del IXMLElement para acceder
al contenido de un atributo en particular. Es necesario conocer el
nombre del atributo.
String contenidoAtributo = elemento.getAttribute(nombreAtributo.toString(),null);
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.60
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.61
Lectura del contenido de un IXMLElement
La lectura del contenido de un IXMLElement es
una tarea sencilla, únicamente hay que invocar
al método getContent() del IXMLElement.
IXMLElement elemento;
String contenidoElemento = elemento.getContent();
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.62
El parser NanoXML
Introducción a NanoXML
NanoXML 2
Análisis de un documento XML con NanoXML
Carga de un documento XML
Acceso y análisis de contenido
•
•
•
•
18/10/2006
Acceso al nombre de un IXMLElement
Acceso a un atributo de un IXMLElement
Lectura del contenido de un IXMLElement
Acceso a un elemento descendiente de un IXMLElement
E.T.S de Ingenieros de Telecomunicación
.63
Acceso a un elemento descendiente de un
IXMLElement
Un IXMLElement puede tener elementos
descendientes que también serán IXMLElement.
Para acceder a ellos, básicamente hay dos
formas:
Acceso por índice:
IXMLElement primerTag = evento. getChildAtIndex(0);
String contenidoPrimerTag = primerTag.getContent();
Acceso por nombre:
IXMLElement tagResumen = evento.getFirstChildNamed("resumen");
String resumen = tagResumen.getContent();
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.64
Índice
Introducción a XML
Origen y comparación con HTML
Principales usos de XML
Estructura de un documento XML
Definición del tipo de documento (DTD)
Tipos de documentos XML
Utilización de XML en el ámbito de MHP
Mapeo de XML a Java
¿Qué es un parser?
Metodologías de manipulación de documentos XML:
• SAX
• DOM
El parser NanoXML
Bibliografía
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.65
Bibliografía
Introducción a XML
http://quark.fe.up.pt/cursoxml/curso.pdf
http://www.dat.etsit.upm.es/~abarbero/curso/xml/xmltutorial.html
http://www.mundotutoriales.com/tutoriales_xml-mdtema177.htm
• Apuntes de XML
NanoXML
http://nanoxml.cyberelf.be/
Foros
Enterprise Technologies - Java Technology & XML
• http://forum.java.sun.com/forum.jspa?forumID=34
Consumer and Commerce - Java TV
• http://forum.java.sun.com/forum.jspa?forumID=36
18/10/2006
E.T.S de Ingenieros de Telecomunicación
.66
Gracias por su atención