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