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



Documentos relacionados
Procesamiento de documentos XML

3.3 Parsers SAX con JAXP

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

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

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Introducción a la Firma Electrónica en MIDAS

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

MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I Facultad de Ingeniería, UBA. Junio Cátedra: Pablo Cosso

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Modelo de Objetos Distribuidos

Curso Excel Básico - Intermedio

Curso de Java POO: Programación orientada a objetos

Bienvenido al sistema de Curriculum Digital CVDigital

Programación Orientada a Objetos con Java

19. Packages o paquetes

BASE DE DATOS RELACIONALES

DIAGRAMA DE CLASES EN UML

Microsoft XML Core Services MSXML

ANÁLISIS Y GESTIÓN DEL DESARROLLO DE SOFTWARE TEMA 5: LA PLANIFICACIÓN DEL PRODUCTO

MATERIAL 2 EXCEL 2007

Gastos Reales Web Manual de Usuario

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

Manual del Protocolo XML-RPC de Mensajería Negocios

Capitulo III. Diseño del Sistema.

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

8. Sentencia return y métodos

Creación de Funciones de Conducción

Guía de acceso vía web a su cuenta de correo electrónico Ciudad Universitaria. Septiembre de 2013.

Uso de excepciones en Java

Java Inicial (20 horas)

Práctica 3 - SMIL, XML en Python

El presente documento describe la importancia que está tomando el cómputo distribuido en

LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO

TUTORIAL PRÁCTICO DE BASES DE DATOS EN ACCESS CREAR UNA AGENDA

Manual de CORREO ELECTRÓNICO

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

OBTENER DATOS EXTERNOS

Programación Orientada a Objetos en Java

Conceptos. ELO329: Diseño y Programación Orientados a Objetos. ELO 329: Diseño y Programación Orientados a Objetos

Manual Ingreso Notas y Acta Electrónica

Práctica de introducción a

Correspondencias entre taxonomías XBRL y ontologías en OWL Unai Aguilera, Joseba Abaitua Universidad de Deusto, EmergiaTech

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE

2.2.- Paradigmas de la POO

ESTRUCTURA DE LOS SITIOS DE CATEDRAS

Iniciar flujo a partir de un archivo XML

Análisis y diseño del sistema CAPÍTULO 3

PRÁCTICA TECNOLOGÍAS DE LA INFORMACIÓN. Objetivos

Capítulo 12: Indexación y asociación

REDES DE ÁREA LOCAL. APLICACIONES Y SERVICIOS EN WINDOWS

MANUAL TRAMITACIÓN PROCEDIMIENTO

Curso Internet Básico - Aularagon

Capacitación Rational Funcional Tester

Base de datos relacional

Cierre de Ejercicios Fiscales en el Sistema ASPEL-COI 4.0

Tutorial de UML. Introducción: Objetivos: Audiencia: Contenidos:

Programa de soporte técnico ampliado MSA Start

Generador de Proxy remoto JavaScript.

INSTRUCCIONES BÁSICAS DE ACCESO AL PORTAL DEL CLIENTE

Servicio Web de Timbrado

Introducción a la programación orientada a objetos

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

TEMA 4: CORREO ELECTRÓNICO: OUTLOOK 2007 CORREO ELECTRÓNICO: OUTLOOK EJECUTAR EL ENTORNO DE TRABAJO GESTIÓN DE CORREO ELECTRÓNICO 3

Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable

PART II: Moviendo al jugador

Proceso Unificado de Rational PROCESO UNIFICADO DE RATIONAL (RUP) El proceso de desarrollo de software tiene cuatro roles importantes:

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

PREVENCIÓN DE DAÑOS EN TEXAS

15 CORREO WEB CORREO WEB

ESPACIOS DE COMUNICACIÓN VIRTUAL

COMO MEDIR LA EFECTIVIDAD DE LA CONCIENTIZACIÓN

Versión final 8 de junio de 2009

Modulo 1 El lenguaje Java

Qué ventajas presenta Google Drive para catedráticos y alumnos?

CONEXIÓN REMOTA CFDI. Proveedor autorizado de certificación SAT Número de aprobación: 55029

Actualización de versión a Bizagi 10.x

Manual de referencia de sistema para la invocación de Web Services con Aduanas (SMS v3.1.12)

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS

Presentaciones compartidas con Google Docs (tutorial)

PROPIEDADES DE LA SOLUCIÓN

Capitulo 5. Implementación del sistema MDM

2 EL DOCUMENTO DE ESPECIFICACIONES

Estimado usuario. Tabla de Contenidos

La elección de Blogger como la plataforma o lugar donde

Sistema de Contabilidad General. Contenido. ACTUALIZACION A PROCONTA 6.0

PREPARANDO EL ENTORNO DE DESARROLLO PARA PROGRAMAR EN PHP. DESCARGAR E INSTALAR NOTEPAD++ (CU00808B)

La ventana de Microsoft Excel

Este sistema de manera global presenta cuatro módulos: bearerbox de Kannel, kj-

Resumen del trabajo sobre DNSSEC

API de java. ( Guía de alumno Laboratorio 9. Recursos disponibles en moodle para este día.

Ejercicio Artículo 4.5. Bancos de imágenes y sonido en la Web

LICENCIATURA EN EDUCACION FISICA RECREACION Y DEPORTES

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.

Conceptos SOA: XSD, Estructurando XML Por Medio de Esquemas

Carta Técnica D D Conceptos D y otros D Corte de Caja... 15

Capitulo 3. Desarrollo del Software

Capítulo 6. Introducción a la POO

Mantenimiento Limpieza

Transcripción:

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

Simple API for XML (SAX) Proporciona mecanismos para leer desde un documento XML. Es un API orientada a eventos, actualmente en su versión 2.0 No conlleva a la generación de estructuras internas, esto es, no crea un árbol del documento Deben registrar manejadores de eventos que utilizarán los parsers Es una alternativa popular al Document Object Model (DOM) 2

SAX :: Orígenes SAX fue originalmente definido como un API de Java, pero ya ha sido portado a otros lenguajes orientados a objetos. La idea de SAX es sencilla, el analizador lee el documento XML desde el inicio y avisa a la aplicación qué es lo que encontró Existen muchos parsers XML que implementan el API SAX, incluyendo Xerces, Crimson, Oracle XML Parser y Ælfred. 3

SAX :: Ventajas Se puede comenzar a procesar tan pronto como se recibe No se tiene que esperar a leer todo el documento antes de actuar sobre los datos El documento entero no tiene que residir en memoria Es conveniente para documentos largos 4

SAX :: Funcionamiento La mayoría de los programa SAX son más específicos y sólo trabajan con ciertos XML Buscan por elementos o atributos particulares en lugares específicos y responden a ellos de manera particular La parte complicada de la mayoría de los programas SAX es la estructura de datos para almacenar la información obtenida por el parser 5

SAX :: Ingredientes Un parser XML Las clases de SAX Un documento XML 6

SAX :: Creación SAX es una colección de interfaces en el paquete org.xml.sax. Uno de las cuales XMLReader, representa el parser XML, declara los métodos para parsear el documento y configurar el proceso de parseo, por ejemplo activando la validación. Primero es necesario crear una instancia con la clase XMLReaderFactory, en el paquete org.xml.sax.helpers, con el método estático createxmlreader() que produce el parser especifico. Una vez creado el parser, se proporciona el ID del sistema, una URL relativa o absoluta al método parse() como una cadena 7

SAX :: Exception El método parse() arroja una SAXParseException si el documento esta mal formado. IOException si se rompe la comunicación mientras el documento es leído. SAXException si algo más sale mal. Cualquier otra cosa, devuelve void. Para recibir información del parser a medida que lee el documento, debe configurarse con un ContentHandler. 8

SAX :: ContentHandler Es un conjunto de llamadas que SAX define para permitir a los programadores insertar código en los eventos importantes durante el parseo de los documentos. Es una interface en el paquete org.xml.sax, la cual debe ser implementada de acuerdo a las necesidades. Luego se configura el XMLReader con una instancia de nuestra implementación, a medida que se lee el documento, se invocan los metodos para decir que es lo que hay en el XML. 9

SAX :: ContentHandler 10 public interface ContentHandler { public void setdocumentlocator(locator locator); public void startdocument() throws SAXException; public void enddocument() throws SAXException; public void startprefixmapping(string prefix, String uri) throws SAXException; public void endprefixmapping(string prefix) throws SAXException; public void startelement(string namespaceuri, String localname, String qname, Attributes atts) throws SAXException; public void endelement(string namespaceuri, String localname, String qname) throws SAXException; public void characters(char[] ch, int start, int length) throws SAXException; public void ignorablewhitespace(char[] ch, int start, int length) throws SAXException; public void processinginstruction(string target, String data) throws SAXException; public void skippedentity(string name) throws SAXException; }

SAX :: Element Callbacks El método startelement( ), proporciona información sobre el elemento y cualquier atributo que tenga. La firma del método indica el nombre del elemento (en varios formatos) y una instancia de sus atributos. El final de un elemento se identifica por la llamada endelement( ), tiene una llamada similar al anterior, pero no contiene la estructura de los atributos. La llamada characters( ), proporciona un envolvente con un arreglo de caracteres, el índice y la longitud a leer. Se debe tener cuidado porque el parser puede elegir enviar todos los datos de forma contigua o dividirlo en múltiples llamadas. 11

SAX :: DefaultHandler Si implementamos la clase a partir de ContentHandler debemos sobrecargar todos sus métodos, pero si sólo se quiere proporcionar uno o dos métodos, se puede hacer una subclase a partir de DefaultHandler, que realiza una implementación vacía de todos los métodos, y enfocarse solo en los que se está interesado. Evita implementar métodos vacios. 12

SAX :: Ejemplo ejemplo.xml SAXInitialParser.java 13

SAX :: Ejemplo SAXParserExample.java 14

15 SAX :: Features y Properties Son utilizados para modificar el comportamiento del parser. Cada una tienen un nombre absoluto URI Los Features pueden ser verdaderos o falsos Los Properties tienen valores de un tipo de objeto Diferentes parsers soportan diferentes grupos de estos Feature : http://xml.org/sax/features/validation Propertie: http://xml.org/sax/properties/documentxml-version Pueden lanzarse las excepciones SAXNotRecognizedException y SAXNotSupportedException, por diversas causas

16 SAX :: Filter Un filtro se coloca entre el parser y la aplicación cliente e intercepta los mensajes que estos se envían Puede pasarlos sin cambios, modificarlos, reemplazarlos o bloquearlos Para la aplicación cliente parece como un parser (XMLReader), para el parser como una aplicación cliente (ContentHandler) Se implementa haciendo una subclase de org.xml,sax.helpers.xmlfilterimpl Al implementar la subclase se sobrecargan los métodos correspondientes a los mensajes que se desean filtrar

SAX :: Filter Generalmente involucran los siguientes pasos: 1. Crear un objeto filter 2. Crear un XMLReader que parsea el documento 3. Adjuntar el filtro al parser, setparent() 4. Instalar un ContentHandler en el filtro 5. Parsear el documento con el parse() del filtro 17

SAX :: Más Ejemplos Validación documentos bien formados src\xmlparser\saxvaliddocument.java Implementación de Filtro para correo electrónico src\xmlparser\saxfilteremail.java 18

19 SAX :: vs DOM Es mejor DOM cuando: Se requiere modificar la estructura del XML Se comparte el documento en memoria con otras aplicaciones El tamaño del documento no es muy grande Es mejor SAX cuando: La tarea a realizar requiere mucha memoria y alto rendimiento No es necesario recorrer la estructura completa del documento Se requiere ir procesando los elementos del archivo a medida que van llegando

SAX :: Referencias XML IN A NUTSHELL (A desktop Quick Refrence) Elliotte Rusty Harold & W. Scott Means, O'Reilly 2004 tercera edición Java & XML (Solutions to Real-World Problems) Brett McLaughblin, O Reilly 2001 segunda edición The J2EE 1.4 Tutorial (Chapter 5. Simple API for XML), http://java.sun.com/j2ee/1.4/docs/tutorial/doc/ 20