Procesamiento de documentos XML



Documentos relacionados
Tema IV. XML V. APIs (DOM & SAX)

SAX Parser. Ing. Augusto Dobeslao Herández López (Bases de Datos en XML)

Tecnología XML. Unidad: 3 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Microsoft XML Core Services MSXML

NIVEL 16: ESTRUCTURAS RECURSIVAS N-ARIAS XML

Roberto Gómez Cárdenas Qué es DOM?

6.1 APIs para XML. APIs para XML (I) ! Uno de los usos más habituales de XML (y menos esperado) es como formato de intercambio de datos.

Índice. Programación en Internet Curso Introducción El DOM en PHP. Programación en Internet DLSI - Universidad de Alicante 1

Uso de excepciones en Java

Interacción y manejo de documentos XML.

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

SAX. cómo funciona? Introducción. La API de análisis basada en eventos

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Java RMI. Sistemas Distribuidos Rodrigo Santamaría

Visualización y Transformaciones en XML

Manual del Protocolo XML-RPC de Mensajería Negocios

2.1. Introducción al lenguaje Java

XMLNode y XMLDocument en el aula

Modulo 1 El lenguaje Java

Práctica 7: Invocación Web Services con REST

Tema 14: Excepciones

Excepciones. Gonzalo Méndez - Dpto. Ingeniería de Software e Inteligencia Artificial. Excepciones

La interoperabilidad se consigue mediante la adopción de estándares abiertos. Las organizaciones OASIS y W3C son los comités responsables de la

UNIVERSIDAD DE SEVILLA PRÁCTICAS DE LABORATORIO ANÁLISIS SINTÁCTICO (1) LENGUAJES FORMALES Y AUTÓMATAS CURSO 2006/2007

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Tema 3, parte 4. Javascript: el DOM (Modelo de Objetos del. Documento) Texto.

Práctica 5: Common Object Request Broker Architecture CORBA

PowerPoint 2010 Hipervínculos y configuración de acciones

Programación Avanzada Ingeniería Civil en Computación

BASE DE DATOS: ENFOQUE ORIENTADO A OBJETOS. Dámaso López Aragón

Modelo de Objetos Distribuidos

Introduciendo datos desde el

extensible Markup Language

2. Estructura de un programa en Java

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

EXCEPCIONES EN JAVA. Las sentencias que tratan las excepciones son try y catch. La sintaxis es:

Gestion de archivos. Problemas al almacenar datos sólo en la memoria:

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

3.3 Parsers SAX con JAXP

Arquitectura de Aplicaciones

Java Inicial (20 horas)

GUÍA DE LABORATORIO 5 ARREGLOS DE UNA DIMENSIÓN

1 Introducción a XML

Introducción a la programación orientada a objetos

1. Visión general de RMI

Curso de programación en Android. 19/Junio/2012 Ramón Alcarria

COMISIÓN NACIONAL PARA EL AHORRO DE ENERGÍA

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

WEB SERVICES. Manual técnico para desarrollador

Arquitectura Cliente/Servidor. Invocación de Métodos Remotos RMI: Remote Method Invocation. Llamadas a Métodos Remotos

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.

GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII

Programación Orientada a Objetos. Java: Excepciones

Java: Clases Abstractas e Interfaces

Programación Orientada a Objetos. Java: Excepciones

Introducción a MS Access Diapositiva 1

Benemérita Universidad Autónoma del Estado de Puebla

Capítulo 1 Documentos HTML5

EXAMEN FINAL Metodología y Programación Orientada a Objetos. Curso Cuatrimestre de otoño. 17 de Enero de 2011

a) Cita y comenta brevemente los grados de acoplamiento. Clasifícalos y ordénalos en orden creciente al nivel de acoplamiento asociado.

Producción Hipermedia

XML, Servicios Web y Web Semántica

Programa. Conceptos básicos: variables, valores y objetos predefinidos, operadores, etc. etc. Callbacks, eval(), etc.

Leer XML con XMLReader en el aula

Introducción - por qué usarlas?(1)

SOLUCION PARCIAL TASK SCHEDULER. Task Scheduler

Tema: Maquetación Web y CSS

3.9 Patrón Distributed callback

Tema 1. Introducción a JAVA

3.4 Parsers DOM con JAXP

GESTIÓN DE EXCEPCIONES EN JAVA. CAPTURA CON BLOQUES TRY CATCH Y FINALLY. EJEMPLOS RESUELTOS. (CU00927C)

Análisis de esquemas XML [1]

SERVICE ORIENTED ARCHITECTURE (SOA) CONTENIDO

Modulo conexión Cliente WS DGI

INGENIERÍA DEL SOFTWARE. 4º ING. INFORMÁTICA (UPV/EHU) 29 de MAYO de 2006

Universidad ORT - Arquitectura de Software. Requisitos

COMISIÓN NACIONAL PARA EL USO EFICIENTE DE LA ENERGÍA

Diseño de sitios Web mediante estándares

Gestión de Permisos. Documento de Construcción. Copyright 2014 Bizagi

Fundamentos de las tecnologías de la información

Introducción al desarrollo de RIA's con Adobe Flex 3.0 Dia 4

Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación

Sintaxis y Convenciones de Java. M. en C. Erika Vilches

Introducción a XML - Validación y Parseo. Huibert Aalbers, Senior Certified Software IT Architect

Estructuras de datos: Proyecto 2

5.1 Introducción a Servicios Web

Tutorial básico del entorno de desarrollo Eclipse.

Parsear HTML con htmlparser para Android Guillem Pérez

Ingeniería del Software Arquitectura Física en 3 niveles

XPath en el aula. Nieves Carralero Colmenar I.E.S Ramón y Cajal. Albacete ncarralero@jccm.es

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2005

Introducción a JAX-WS Web Services

BASE DE DATOS RELACIONALES

Transcripción:

Procesamiento de documentos XML Documentación Electrónica Soto Montalvo

Contenido Introducción Document Object Model Simple API for XML DOM vs. SAX

Cómo podemos manipular los documentos XML? SAX (Simple API for XML) Analizador basado en eventos que realiza un recorrido secuencial sobre el documento XML DOM (Document Object Model) Se genera un árbol del documento XML sobre el que se puede hacer cualquier tipo de recorrido Para acceder al documento XML se puede programar con cualquier lenguaje

Contenido Introducción Document Object Model Simple API for XML DOM vs. SAX

DOM Interfaz independiente de la plataforma y del lenguaje que permite acceder de forma fácil, consistente y homogénea a los elementos y atributos de un documento XML Un DOM completo debería permitir: Reconstrucción del documento completo a partir del modelo El acceso a cualquiera de las partes del documento Manipulaciones, adiciones y eliminaciones en el documento

DOM No está escrito para un ser usado desde un lenguaje de programación en particular Se escribió empleando un lenguaje de definición de interfaz (IDL Interface Definition Language) Para cada lenguaje de programación concreto habrá una traducción de los tipos IDL a tipos del lenguaje concreto El W3C se encarga de la especificación de DOM

DOM DOM proporciona un modelo para el documento completo representándolo como un árbol (que constituye una jerarquía de objetos nodo). Cada nodo del árbol representa: Una etiqueta (elemento) Texto encerrado por una etiquetas Los nodos del árbol están relacionados mediante vínculos del tipo: padre, hijo y hermano. La estructura permite navegar de un nodo a cualquier otro. La jerarquía completa se carga en memoria.

Interfaces DOM La especificación DOM del W3C define varias interfaces, cada una con sus propios métodos y atributos. Las interfaces básicas para comenzar a trabajar con DOM serían: Document: proporciona acceso al documento XML cargado en el objeto DOM Node: todo en un documento es un nodo, las etiquetas, los comentarios, etc Attr: permite manipular los atributos XML de un nodo (sin embargo, se suelen usan métodos de Element para trabajar con atributos) Element: la mayor parte de nodos de un documento son elementos CharacterData y Text: trata el contenido textual de un elemento

Acceso DOM Hay dos formas de acceder a un nodo en la jerarquía de nodos DOM (que se pueden combinar): Recorriendo el árbol Se comienza en cualquier parte del árbol del documento y se utilizan los siguientes atributos de node: parentnode: accede al padre firstchild: accede al primer hijo lastchild: accede al último hijo nextsibling: accede a su siguiente hermano previoussibling: accede a su hermano anterior childnodes: es una lista de hijos accesible mediante un índice A través del nombre del elemento getelementsbytagname(nombelemento), retorna una lista de nodos del mismo tipo y, mediante un índice, se accede al deseado

Ejemplo de procesamiento DOM public class EjemploDOM { public static void main(string[] args) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newdocumentbuilder(); Document document = db.parse(new File("docRecetas2.xml")); NodeList list = document.getelementsbytagname("titulo"); int i=0; while(i<list.getlength()) { Node n = list.item(i); System.out.println("contenido: "+ n.getfirstchild().getnodevalue()); i++; } } catch (Exception e) { e.printstacktrace(); } } }

Ejemplo de procesamiento DOM Será necesario importar las siguientes clases: import java.io.file; import javax.xml.parsers.documentbuilder; import javax.xml.parsers.documentbuilderfactory; import org.w3c.dom.document; import org.w3c.dom.node; import org.w3c.dom.nodelist; Salida de la ejecución del ejemplo: contenido: Tortilla de patatas

Ejemplo de procesamiento DOM Documento XML utilizado en el ejemplo: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE receta SYSTEM "recetas.dtd" > <receta> <titulo categoria="segundo">tortilla de patatas</titulo> <descripcion dificultad="media">typical Spanish</descripcion> <ingredientes> <ingrediente> <nombre>patata</nombre> <cantidad medida="unidades">al gusto</cantidad> </ingrediente> <ingrediente> <nombre>huevo</nombre> <cantidad medida="unidades">al gusto</cantidad>... </receta>

Contenido Introducción Document Object Model Simple API for XML DOM vs. SAX

SAX El acceso al documento XML es secuencial No crea un modelo de objetos en forma de árbol Proporciona acceso a la información mediante una secuencia de eventos SAX lanza eventos cuando comienza el análisis del documento XML, cuando finaliza, por cada etiqueta de apertura que encuentra, por cada etiqueta de cierre, etc.

Programar con SAX El programador debe: 1. Conocer la estructura del documento a procesar 2. Determinar la información que debe localizar 3. Ver cuál es la mejor forma de almacenarla en una estructura de datos 4. Determinar qué eventos y qué secuencia seguirán para localizar la información

Manejadores de eventos Los manejadores de eventos indican qué métodos se ejecutan cuando ocurren los diferentes eventos. Manejadores de eventos más comunes con SAX: ContentHandler: maneja eventos relacionados con los datos de un documento XML ErrorHandler: recibe información sobre los errores en los datos de un documento XML

Manejador de contenido El manejador ContentHandler proporciona los siguientes métodos: startdocument(): invocado cuando comienza un documento enddocument(): invocado cuando finaliza un documento startelement(nombre, atributos): invocado cuando se abre una etiqueta endelement(nombre): invocado cuando se cierra una etiqueta characters(texto): invocado cuando aparece un bloque de texto

Sobre excepciones Muchos de los métodos de respuesta a eventos SAX declaran una excepción SAXException Es el único tipo de excepción que puede lanzar un analizador SAX. Cualquier otra excepción será encapsulada en ésta

Manejador de errores Los manejadores de errores sirven para tratar los errores que se produzcan durante el análisis. error(excepción): invocado cuando el parser encuentra un error recuperable (el análisis del documento puede continuar) fatalerror(excepción): invocado cuando el parser encuentra un error irrecuperable (el análisis del documento debe finalizar) warning(excepción): invocado cuando el parser proporciona avisos (el análisis debe continuar).

Ejemplo de procesamiento SAX public class EjemploSAX { public static void main(string[] args) { XMLReader parser = new SAXParser(); MyHandler handler = new MyHandler(); InputSource inputfile = new InputSource("docRecetas2.xml"); inputfile.setencoding("iso-8859-1"); } } try { parser.setcontenthandler(handler); parser.parse(inputfile); } catch (IOException e) { e.printstacktrace(); } catch (SAXException e) { e.printstacktrace(); }

Ejemplo de procesamiento SAX Será necesario importar las siguientes clases: import java.io.file; import java.io.ioexception; import org.xml.sax.inputsource; import org.xml.sax.saxexception; import org.xml.sax.xmlreader; import com.sun.org.apache.xerces.internal.parsers.saxparser; El manejador de contenido sería: import org.xml.sax.helpers.defaulthandler; public class MyHandler extends DefaultHandler { public void enddocument() { System.out.println("FIN DEL ANALISIS DEL DOCUMENTO"); } } Salida: FIN DEL ANALISIS DEL DOCUMENTO

Contenido Introducción Document Object Model Simple API for XML DOM vs. SAX

Comparativa Utilizar DOM o SAX para analizar un documento XML? DOM: Un árbol es útil para documentos pequeños que necesitan ser procesados en su práctica totalidad Los programas que utilizan el DOM suelen requerir menos código que aquellos que emplean SAX El DOM permite generar documentos XML desde cero, hacer esto en SAX es imposible. SAX: El enfoque orientado a eventos es útil para documentos grandes en los que sólo hay que procesar una pequeña parte de la información Para buscar información SAX es más eficiente que DOM No hay un árbol que refleje el documento por lo que requiere menos memoria