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&iacute;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 &lt;
Mayor que  >, para representarlo usar la entidad &lg;
Ampersand  &, para representarlo usar la entidad &amp;
Dobles comillas  “, para representarlo usar la entidad &quot;
Apóstrofe  ‘, para representarlo usar la entidad &apos;
 & 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