Download Tema 4 - XML (Parte 5
Document related concepts
no text concepts found
Transcript
Tema IV. XML V. APIs (DOM & SAX) Desarrollo de Aplicaciones para Internet Curso 12|13 Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias DOM vs SAX ● ● DOM – El árbol DOM se mantiene en memoria – Acceso aleatorio – Estándar del W3C SAX – Dirigido por eventos – Recorren el árbol generando eventos ante los cuales se pueden realizar acciones – Acceso secuencial – No es un estándar W3C APIs XML en Java Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias ¿Qué es DOM? ● ● ● Document Object Model Proporciona una interfaz para los programadores que permite – Crear documentos XML – Navegar por documentos XML – Añadir, modificar o eliminar partes del documento XML (manteniéndolo bien formado) El documento completo se representa en memoria con una estructura de árbol Estándar DOM del W3C ● ● Página principal: http://www.w3.org/DOM/ DOM se ha evolucionado desde 1998, existiendo 3 niveles*: – Nivel 1: Define las interfaces básicas de representación de documentos. No incluye métodos para crear un documento XML ni para gestionar eventos – Nivel 2: Añade nuevas funcionalidades, tales como soporte para namespaces, y divide la especificación en varios módulos – Nivel 3: Añade varios estándares, como el manejo de URIs o el mapeo de DOM a XML. Es la versión actual * Actualmente se está trabajando en el cuarto nivel (DOM4) Creación de Árboles DOM ● Un árbol DOM suele crearse de cuatro formas 1.Parseando un fichero en disco 2.Parseando una cadena de texto embebida en el propio programa 3.Parseando un flujo de texto enviado desde un programa remoto 4.Utilizando el API DOM para crear los nodos del árbol (createElement, appendChild, etc.) Ejemplo Árbol DOM* * Ejemplo tomado del libro “Beginning XML” - D. Hunter et al. Índice 1.Introducción 2.DOM i. Introducción ii.Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias Interfaces Principales de DOM (I) ● Node: Cualquier nodo que pertenezca al árbol DOM debe implementar esta interfaz ● NodeList: Lista de nodos ● Document: Es el elemento raíz de los árboles DOM ● ● ● DocumentType: Elemento asociado a un documento que da acceso a las entidades y notaciones asociadas DocumentFragment: Representa una parte de un árbol DOM. Su función es similar a la de Document, pero se usa con partes de un árbol mayor ProcessingInstruction: Elemento con instrucciones de procesado para el parser Interfaces Principales de DOM (II) ● ● ● Element: Representa un elemento XML Attr: Representa un atributo. Los atributos no se consideran hijos del elemento asociado CharacterData: Padre de las interfaces Text y CDATASection, define los métodos básicos de manejo de caracteres de texto ● Text: Representa un nodo de texto ● CDATASection: Representa una sección CDATA ● Entity: Representa una entidad XML ● EntityReference: Representa una referencia a una entidad XML Interfaz Node ● Métodos principales (I) – appendChild(Node newChild):Node ● – removeChild(Node oldChild):Node ● – Devuelve un mapa con pares de nombre/valor de los atributos del nodo actual getChildNodes():NodeList ● – Elimina un nodo hijo del nodo actual getAttributes():NamedNodeMap ● – Añade un nodo hijo al nodo actual Devuelve la lista de nodos hijos del nodo actual getFirstChild()/getLastChild():Node ● Devuelven el primer/último nodo hijo del nodo actual Interfaz Node ● Métodos principales (II) – getNextSibling()/getPreviousSibling() :Node ● – getNodeName():String* ● – Devuelve el nombre del nodo actual getNodeValue():String* ● – Devuelven el siguiente/anterior nodo hermano del nodo actual Devuelve el valor del nodo actual getTextContent():String ● Devuelve el contenido de texto del nodo actual * En el API Java de Node se especifica el valor que se devuelve para cada tipo de nodo Interfaz Element ● Métodos principales (I) – getAttribute(String name):String ● – getAttributeNode(String name):Attr ● – Devuelve el atributo especificado getElementsByTagName(String name):NodeList ● – Devuelve el valor del atributo especificado Devuelve todos los elementos descendientes cuyo nombre sea el especificado getTagName():String ● Devuelve el nombre del elemento Interfaz Element ● Métodos principales (II) – setAttribute(String name, String value):void ● – setAttributeNode(Attr newAttr):Attr ● – Añade un atributo al elemento actual removeAttribute(String name):void ● – Asigna un valor a un atributo especificado Elimina un atributo del elemento actual removeAttributeNode(Attr attr):Attr ● Elimina un atributo del elemento actual Interfaz Document ● Métodos principales (I) – createAttribute(String name):Attr ● – createElement(String tagName):Element ● – Crea un elemento del tipo especificado createTextNode(String data):Text ● – Crea un atributo con el nombre dado Crea un elemento de texto con el contenido dado getDoctype():DocumentType ● Devuelve el Document Type Declaration asociado Interfaz Document ● Métodos principales (II) – getElementById(String elementId):Element ● – Devuelve el elemento descendiente con el id indicado getElementsByTagName(String tagname):NodeList ● Devuelve una lista con los elementos descendientes cuyo tipo sea el indicado Clases Importantes ● javax.xml.parsers.DocumentBuilderFactory – ● javax.xml.parsers.DocumentBuilder – ● Parser XML javax.xml.transform.TransformerFactory – ● Factoría para la construcción de parsers de XML Factoría para la construcción de transformadores javax.xml.transform.Transformer – Clase para la transformación de un árbol fuente en un árbol resultado Clases Importantes ● javax.xml.validation.SchemaFactory – ● javax.xml.validation.Schema – ● Factoría para la creación de XML Schemas Representa un XML Schema javax.xml.validation.Validator – Factoría para la construcción de transformadores Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias Carga de Documentos Carga de Documentos con Validación (DTD) Manejador de Errores de Parsing Carga de Documentos con Validación (XML Schema) Validación con DTDs Validación con XML Schema Transformación en Texto Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias ¿Qué es SAX? ● ● ● Simple API for XML No se crea una representación del documento en memoria El parser genera una serie de eventos al analizar secuencialmente el documento XML Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii.Interfaces y Clases iii.Ejemplos 4.Referencias Interfaz ContentHandler ● ● Define una serie de métodos que se irán invocando al hacer el parsing Los métodos/eventos principales son – startDocument/endDocument ● – startElement/endElement ● – Eventos de inicio y fin de documento Eventos de inicio y fin de elemento characters ● Evento que se produce cuando se procesa un bloque de texto Clases Importantes ● DefaultHandler – ● SAXParserFactory – ● Factoría para crear parsers SAX SAXParser – ● Implementación vacía de ContentHandler, que evita tener que implementar todos sus métodos Parser SAX XMLReader – Parser SAX encapsulado por SAXParser Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias Parsing de un Fichero XML Parsing de un Fichero XML con Validación (DTD) Parsing de un Fichero XML con Validación (XML Schema) Ejemplo Trenes (XML Schema) Ejemplo Trenes (XML) Ejemplo Trenes (Bean) Ejemplo Trenes (ContentHandler I) Ejemplo Trenes (ContentHandler II) Ejemplo Trenes (ContentHandler III) Ejemplo Trenes (ContentHandler VI) Índice 1.Introducción 2.DOM i. Introducción ii. Interfaces y Clases iii.Ejemplos 3.SAX i. Introducción ii. Interfaces y Clases iii.Ejemplos 4.Referencias Bibliografía ● ● ● Beginning XML, 4th Edition – D. Hunter et al. Professional XML – B. Evjen et al. World Wide Web Consortium (W3C) – ● http://www.w3.org/ - última visita 31/08/2012 Lesson: Simple API for XML – http://docs.oracle.com/javase/tutorial/jaxp/sax/index.html - última visita 20/10/2012