Post on 11-Jan-2015
transcript
MANEJO DE DOCUMENTOS XML EN MANEJO DE DOCUMENTOS XML EN MHPMHP
Leire Urriza Oiz
18/10/2006 .2E.T.S de Ingenieros de Telecomunicación
Í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 .3E.T.S de Ingenieros de Telecomunicación
Origen y comparación con HTML (1/3)
XML (eXtensible Markup Language) significa lenguaje de marcas generalizadoEs 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 documentoBasado 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 .4E.T.S de Ingenieros de Telecomunicación
Origen y comparación con HTML (2/3)
Código XML
<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>
Código HTML
<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 .5E.T.S de Ingenieros de Telecomunicación
Origen y comparación con HTML (3/3)
Código XML
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
Código HTML
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
HTML y XML son complementariosHTML y XML son complementarios
18/10/2006 .6E.T.S de Ingenieros de Telecomunicación
Í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 .7E.T.S de Ingenieros de Telecomunicación
Principales usos de XML
XML aplicado a sitios webPermite separar contenido y presentaciónLos mismos datos se pueden mostrar de distintas
formas sin demasiado esfuerzo
XML para la comunicación entre aplicacionesRepresentación de los datos muy simple y fácil de
transmitir por la red
XML para la configuración de programasRepresentación de los datos simple y estándar.
18/10/2006 .8E.T.S de Ingenieros de Telecomunicación
Í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 .9E.T.S de Ingenieros de Telecomunicación
Estructura de un documento XML (1/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006 .10E.T.S de Ingenieros de Telecomunicación
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 .11E.T.S de Ingenieros de Telecomunicación
Estructura de un documento XML (3/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006 .12E.T.S de Ingenieros de Telecomunicación
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 .13E.T.S de Ingenieros de Telecomunicación
Estructura de un documento XML (5/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006 .14E.T.S de Ingenieros de Telecomunicación
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 .15E.T.S de Ingenieros de Telecomunicación
Estructura de un documento XML (7/8)
Declaración de un documento XML
Sintaxis
Contenido
Ejemplo
18/10/2006 .16E.T.S de Ingenieros de Telecomunicación
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 .17E.T.S de Ingenieros de Telecomunicación
Í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 .18E.T.S de Ingenieros de Telecomunicación
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 .19E.T.S de Ingenieros de Telecomunicación
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 XMLPalabra SYSTEM indica que el DTD se obtendrá a
partir de un elemento externoURL en la que se encuentre el DTD entrecomillada
18/10/2006 .20E.T.S de Ingenieros de Telecomunicación
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 .21E.T.S de Ingenieros de Telecomunicación
Definición del tipo de documento (DTD) (4/6)DTD dentro del propio XML (1/3)
Ejemplo:<?xml version="1.0"?><!DOCTYPE servicio [
<!ELEMENT evento (imagenTitulo?,titulo?,horaInicio?,horaFin?,resumen?,video,audio?)><!ATTLIST evento id CDATA #REQUIRED><!ELEMENT imagenTitulo (#PCDATA)><!ELEMENT titulo (#PCDATA)><!ELEMENT horaInicio (#PCDATA)><!ELEMENT horaFin (#PCDATA)><!ELEMENT resumen (#PCDATA)><!ELEMENT video (rectanguloOrigen?,rectanguloDestino?,localizadorDestino?)>
<!ELEMENT rectanguloOrigen (x?,y?,ancho?,alto?)><!ELEMENT x (#PCDATA)>
<!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)>
]>
Definir elemento
Nombre elemento
Tipo de datos
Elementos descendientes
Opcional pero singularDefinir
atributo
Nombre del elementodel que se declara
el atributo
Nombre atributo Posibles valores del atributo o CDATA
obligatorio
18/10/2006 .22E.T.S de Ingenieros de Telecomunicación
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 .23E.T.S de Ingenieros de Telecomunicación
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 .24E.T.S de Ingenieros de Telecomunicación
Í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 .25E.T.S de Ingenieros de Telecomunicación
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 .26E.T.S de Ingenieros de Telecomunicación
Í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 .27E.T.S de Ingenieros de Telecomunicación
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 .28E.T.S de Ingenieros de Telecomunicación
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 .29E.T.S de Ingenieros de Telecomunicación
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 .30E.T.S de Ingenieros de Telecomunicación
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-AnytimeEl 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 .31E.T.S de Ingenieros de Telecomunicación
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 .32E.T.S de Ingenieros de Telecomunicación
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 .33E.T.S de Ingenieros de Telecomunicación
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 .34E.T.S de Ingenieros de Telecomunicación
Í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 .35E.T.S de Ingenieros de Telecomunicación
¿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 .36E.T.S de Ingenieros de Telecomunicación
Í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 .37E.T.S de Ingenieros de Telecomunicación
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 .38E.T.S de Ingenieros de Telecomunicación
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 .39E.T.S de Ingenieros de Telecomunicación
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 .40E.T.S de Ingenieros de Telecomunicación
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 .41E.T.S de Ingenieros de Telecomunicación
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 .42E.T.S de Ingenieros de Telecomunicación
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 .43E.T.S de Ingenieros de Telecomunicación
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 .44E.T.S de Ingenieros de Telecomunicación
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 .45E.T.S de Ingenieros de Telecomunicación
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 .46E.T.S de Ingenieros de Telecomunicación
Í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 .47E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .48E.T.S de Ingenieros de Telecomunicación
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 NanoXMLMuy pequeño (unos 6K)Razonablemente rápido para documentos XML
pequeñosSencillo de usarGratis
18/10/2006 .49E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .50E.T.S de Ingenieros de Telecomunicación
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 .51E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .52E.T.S de Ingenieros de Telecomunicación
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 .53E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .54E.T.S de Ingenieros de Telecomunicación
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 .55E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .56E.T.S de Ingenieros de Telecomunicación
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 .57E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .58E.T.S de Ingenieros de Telecomunicación
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 .59E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .60E.T.S de Ingenieros de Telecomunicación
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 .61E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .62E.T.S de Ingenieros de Telecomunicación
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 .63E.T.S de Ingenieros de Telecomunicación
El parser NanoXML
Introducción a NanoXMLNanoXML 2Análisis de un documento XML con NanoXML
Carga de un documento XMLAcceso y análisis de contenido
• 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
18/10/2006 .64E.T.S de Ingenieros de Telecomunicación
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 .65E.T.S de Ingenieros de Telecomunicación
Í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 .66E.T.S de Ingenieros de Telecomunicación
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
Gracias por su atención