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.



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

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

DOM. Document Object Model

Microsoft XML Core Services MSXML

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

Diseño de sitios Web mediante estándares

Interacción y manejo de documentos XML.

1 Introducción a XML

Procesamiento de documentos XML

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

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

Curso de Java POO: Programación orientada a objetos

Capítulo 1 Documentos HTML5

Visualización y Transformaciones en XML

Definiciones. Tema 21_Módulos Menú 1

comunidades de práctica

extensible Markup Language

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

Fundamentos de las tecnologías de la información

Capitulo VI. Conclusiones.

Almacenamiento de documentos XML

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

Mi propuesta consiste en crear un portal Web que contemple las siguientes funcionalidades:

TEMA: DESARROLLO DE APLICACIONES WEB INTERACTIVAS UTILIZANDO LA TÉCNICA AJAX AUTOR: MERY SUSANA ZAMBONINO BAUTISTA

Base de datos en Excel

ESTÁNDAR DESEMPEÑO BÁSICO Recopila información, la organiza y la procesa de forma adecuada, utilizando herramientas tecnológicas.

Yusef Hassan Montero Francisco Jesús Martín Fernández. Introducción a DOM. Todos los derechos reservados

3.1 Tipos de DTDs. ! Si queremos validar un documento XML (para comprobar si cumple las normas de un dialecto) tendremos que validarlo contra el DTD.

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

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

ESOFT 3 Nice Screen Scraper: A simple scraper

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

Capítulo 5. Implementación y Tecnologías Utilizadas

Curso de Python Inicial

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

Historial de Versiones: Velneo vversion. Funcionamiento. Repositorio de versiones. Funcionalidades del Historial de Versiones. Bloquear.

5.1 Introducción a XSL

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

GUIA PROGRAMACIÓN ORIENTADA A OBJETOS

Transformación de documentos XML con

INSTRUCTIVO DE ADMINISTRADOR ALFRESCO COMMUNITY 4.2

Datos Estadísticos y el Lenguaje XML

GENERACIÓN DE ANTICIPOS DE CRÉDITO

Ampliación de Estructuras de Datos

GENERACIÓN DE TRANSFERENCIAS

ATLAS MANUAL DE USUARIO COMPONENTE CODIGO DE BARRAS

Capitulo III. Diseño del Sistema.

ATLAS MANUAL DE USUARIO ARBOL ACCESIBLE

Capítulo 3. Análisis y Diseño

Introducción a la extensión de scripting en gvsig 2.0

Introducción a los Tipos Abstractos de Datos

Instalar y configurar W3 Total Cache

Java Inicial (20 horas)

CAPITULO 4. Requerimientos, Análisis y Diseño. El presente capítulo explica los pasos que se realizaron antes de implementar

Manual de rol gestor de GAV para moodle 2.5

Patrones para persistencia (I) Ingeniería del Software II

Proyecto MONO. Juantomás García. 1. Introducción. GNOME Hispano

Capítulo 3: XML Spy como editor de documentos XML. 2. La interfaz de usuario de XML Spy

Guia Rapida. Facturación x Internet. Supermercados Internacionales HEB, S.A. de C.V. Tabla de Contenido

2 EL DOCUMENTO DE ESPECIFICACIONES

XML y XQuery. Qué es XML? Qué es XML? (II) Ejemplo de fichero XML. Cuerpo de un documento XML. Estructura de un documento XML

Proxia Content Manager

Árboles. Cursos Propedéuticos Dr. René Cumplido M. en C. Luis Rodríguez Flores

XMLNode y XMLDocument en el aula

Manual para la utilización de PrestaShop

Visualizar y descargar contenidos

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

GENERALIDADES DE BASES DE DATOS

- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013

10550 Programming in Visual Basic with Microsoft Visual Studio 2010

Cómo sabes si tus esfuerzos en Social Media te están dando resultados? Para eso hay que medir, y Google Analytics ha venido a ayudarnos.

PORTAL DE LA CIUDAD DIGITAL DE MAZARRÓN ESQUEMA DE MÓDULOS DE LA PLATAFORMA

Manual CMS Mobincube

Capítulo 6. ÁRBOLES.

POLÍTICA DE PRIVACIDAD PARA APLICACIONES MÓVILES GRUPOCOPESA. 1. información que se obtiene la aplicación y su utilización

Estimado usuario. Tabla de Contenidos

Cómo gestionar menús en Drupal 7

19. Packages o paquetes

1.1.- Objetivos de los sistemas de bases de datos Administración de los datos y administración de bases de datos Niveles de Arquitectura

Conceptos Generales en Joomla

GUÍA RÁPIDA DE TRABAJOS CON ARCHIVOS.

MANUAL WINDOWS MOVIE MAKER. Concurso de Gipuzkoa

Nº de expediente: TSI Subprograma: Avanza Competitividad I+D+I

Práctica de introducción a

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

1. Resumen Objetivos Introducción. 3

IES Pablo Serrano-ASIR1D/DAM1D-B.Soler XML

MANAUAL DE MANTENIMIENTO PARA LA PÁGINA WEB DE PROYECTO ADL GESTOR DE CONTENIDOS

Unidad II. Interfaz Grafica (continuación ) Basado en clases de Ing. Carlos A. Aguilar

El proceso de edición digital en Artelope y CTCE

DEPARTAMENTO: Informática. MATERIA: Programación. NIVEL: 1º Desarrollo de Aplicaciones Multiplataforma

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

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

M III ABSTRACCIÓN Y CLASIFICACIÓN

Como instalar y usar Windows XP y Windows 7 en el mismo equipo

GENERACIÓN Y CONSTRUCCIÓN DE DOCUMENTOS XML

Práctica 5. Curso

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

Modulo I. Introducción a la Programación Web. 1.1 Servidor Web.

Transcripción:

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.! En este caso los documentos XML nunca llegan a visualizarse, sino que son producidos y consumidos por aplicaciones informáticas.! Es necesario poder acceder facilmente al documento XML desde el software. 2002 Borja Sotomayor 1

APIs para XML (II)! Disponemos de dos APIs (Application Program Interface) practicamente estándares con las que podemos acceder facilmente a un documento XML.! DOM " Document Object Model (W3C)! SAX " Simple API for XML! Estas APIs nos permiten abstraernos de los detalles sintácticos de XML.! Trabajamos a nivel de elementos, atributos, etc.! Existen implementaciones de DOM y SAX en los lenguajes más populares (C++, Java, C#, Perl, etc.) APIs para XML (III)! DOM " API orientada a objetos! Una vez que se ha leido el documento, crea una copia en memoria a la que podemos acceder a través de una jerarquía de clases ( Documento, Elemento, Atributo, etc.)! SAX " API orientada a eventos! Conforme se va leyendo el documento se pueden capturar ciertos eventos ( Comienzo de documento, Comienzo de elemento, etc) y realizar un tratamiento sobre ellos. 2002 Borja Sotomayor 2

APIs para XML (IV) DOM SAX Almacena una copia del documento XML en memoria. No es recomendable para ficheros grandes. No podemos acceder al documento hasta que éste se ha cargado por completo en memoria. Podemos acceder directamente a cualquier parte del documento (una vez que se ha cargado) Procesa el documento XML sobre la marcha. Ideal para flujos continuos de datos. Tenemos acceso a cualquier parte del documento en cuanto es leida. No podemos acceder directamente a cualquier parte del documento. Hay que esperar a que sea leida. Permite modificar el documento. Sólo permite leer el documento. 2002 Borja Sotomayor 3

6.2 DOM Introducción Introducción (I)! DOM " Document Object Model.! Jerarquía de clases que nos permite interactuar con el documento XML desde un programa.! Creado y mantenido por el W3C.! Está definido en IDL, por lo que (en teoría) puede implementarse en cualquier lenguaje orientado a objetos (es languageneutral). Existen implementaciones para JavaScript, Java, C#, etc. 2002 Borja Sotomayor 1

Introducción (II)! Hay varias versiones del DOM.! DOM 1 (1998)! Funcionalidad básica para XML y HTML! DOM 2 (2000)! DOM 1 + soporte para hojas de estilos, eventos y XML Namespaces.! Soporte para XHTML.! DOM 3 (en desarrollo)! Soporte para más tecnologías XML (XML Schema, XPath, y otras) Introducción (III)! A partir de DOM 2, se dividió en varios módulos:! DOM Core " Funcionalidad básica para XML. Maneja conceptos como elemento hijo, elemento padre, elemento hermano, etc.! DOM HTML " Incluye funcionalidad específica para HTML (y XHTML).! DOM Events " Soporte para eventos.! DOM Views " Soporte para vistas (similares a las de una base de datos)! DOM Style " Permite interactuar con hojas de estilo.! DOM Traversal and Range " Añade iteradores al DOM. 2002 Borja Sotomayor 2

Introducción (IV)! Para acceder a un documento XML, el DOM Core suele ser suficiente. Los demás módulos, de hecho, son opcionales. Representación Interna (I)! El DOM almacena el documento XML en memoria utilizando una representación jerarquica (muy similar a la de Xpath)! El documento es un arbol con diferentes tipos de nodos.! DOM tiene en cuenta más tipos de nodos que XPath.! Este hecho se ve reflejado en la jerarquía de clases del DOM. 2002 Borja Sotomayor 3

«exception» DOMException DOMImplementation Node NodeList NamedNodeMap Document Element Attr DocumentType CharacterData DocumentFragment ProcessingInstruction Entity EntityReference Notation Text Comment CDATASection <biblioteca> <libro titulo= El Juego de Ender > <copia edicion= 1987 /> <comentario> Me gustó mucho!</comentario> </libro> <libro titulo= La Fundación > : Document RAIZ <copia edicion= 1999 /> </libro> </biblioteca> <!-- Esta es mi biblioteca --> : Element biblioteca : Comment Esta es mi " : Attr titulo : Element libro : Element libro : Attr titulo : Text : Text El Juego " La fundac " : Attr : Element : Element : Element : Attr edicion copia comentario copia edicion : Text 1987 : Text Me gustó " : Text 1999 2002 Borja Sotomayor 4

Representación Interna (II)! Al igual que XPath, esta representación jerarquica es un tanto peculiar:! El elemento raíz del documento (<biblioteca>) no es la raíz del árbol, ya que puede haber más cosas al mismo nivel que el elemento raíz (por ejemplo, un comentario).! A pesar de que los atributos se representan como nodos, no son estrictamente hijos del elemento al que pertenecen (podría decirse que son nodos asociados ). 2002 Borja Sotomayor 5

6.3 DOM - Document Introducción (I)! El interfaz Document es, junto con el interfaz Node, uno de los más importantes del DOM.! Representa todo el documento XML.! Es, a su vez, un nodo (Node).! Es el nodo raiz del arbol DOM.! Sólo pueden instanciarse clases que implementen este interfaz (no podemos, por ejemplo, instanciar un elemento, un comentario, etc.) 2002 Borja Sotomayor 1

Introducción (II)! Cómo cargamos un fichero XML del disco duro a la memoria con el DOM?! El DOM no especifica cómo hacer esto. Depende de cada implementación concreta. El DOM da por supuesto que el documento ya está cargado en memoria.! A partir del DOM 3 este aspecto se estandarizará. Acceso al Documento (I)! getelementsbytagname(nombre_etiqueta) Devuelve un objeto NodeList con todos los elementos cuyo nombre sea nombre_etiqueta! getelementbyid(id) Si en el DTD hemos definido algún atributo de tipo ID, este método devuelve el objeto Element correspondiente al elemento que tenga el valor ID en dicho atributo. (DOM2)! documentelement Atributo de sólo lectura que contiene una referencia al objeto Element correspondiente al elemento raiz del documento. 2002 Borja Sotomayor 2

Acceso al Documento (II)! También podemos utilizar todas las propiedades y métodos heredados de Node (firstchild, appendchild,...)! En DOM 2 tenemos, además, el método getelementsbytagnamens, que nos permite obtener elementos especificando su namespace (XML Namespaces). Creación de Nodos (I)! El objeto Document es el único directamente instanciable. A través de él podremos crear todos los tipos de nodos.! createelement(nombre_etiqueta) Crea un objeto Element (nodo elemento) vacío cuyo nombre será nombre_etiqueta! createattribute(nombre_atributo) Crea un objeto Attr (nodo atributo) sin valor y con nombre nombre_atributo.! createtextnode(texto) Crea un objeto Text (nodo texto) cuyo texto será texto! createcomment(texto) Crea un objeto Comment (nodo comentario) cuyo contenido será texto 2002 Borja Sotomayor 3

Creación de Nodos (II)! createcdatasection(texto) Crea un objeto CDATASection (nodo CDATA) cuyo contenido será texto! createprocessinginstruction(nombre, attrs) Crea un objeto ProcessingInstruction (nodo instrucción de proceso). El nombre de la instrucción será nombre y los atributos se especifican todos en el parametro attrs.! createentityreference(nombre_entidad) Crea un objeto EntityReference (nodo referencia a entidad) que referencia a la entidad nombre_entidad.! createdocumentfragment() Crea un objeto DocumentFragment vacío. Otros! doctype: El objeto DocumentType correspondiente al DTD del documento.! implementation: El objeto DOMImplementation ligado al documento.! importnode(...): Para copiar subarboles enteros entre documentos (DOM 2)! Más constructores (DOM 2):! createelementns(...)! createattributens(...) 2002 Borja Sotomayor 4

6.4 DOM - Node Introducción! El interfaz Node es, junto con el interfaz Document, uno de los más importantes del DOM.! Todos los tipos de nodo derivan de este interfaz.! Incluye las operaciones básicas de navegación por el arbol DOM ( primer nodo, siguiente nodo, último nodo, etc.)! Incluye las operaciones básicas de escritura de nodos ( añadir nodo a mis hijos, eliminar éste nodo hijo, etc.) 2002 Borja Sotomayor 1

Propiedades Básicas (I)! nodename: Nombre del nodo (depende del tipo del nodo).! Element " Nombre del elemento! Attr " Nombre del atributo! nodevalue: Valor del nodo (depende del tipo del nodo). No es equivalente al valor del nodo en XPath y XSLT.! Element " null! Attr " Valor del atributo! Text " Texto del nodo. Propiedades Básicas (II)! nodetype: Tipo del nodo.! 1 " Element! 2 " Attr! 3 " Text! 4 " CDATASection! 5 " EntityReference! 6 " Entity! 7 " ProcessingInstruction! 8 " Comment! 9 " Document! 10 " DocumentType! 11 " DocumentFragment! 12 " Notation 2002 Borja Sotomayor 2

Propiedades de Navegación! parentnode " El nodo padre.! childnodes " Un NodeList con todos los nodo hijos.! firstchild " El primer nodo hijo.! lastchild " El último nodo hijo.! previoussibling " El nodo anterior (literalmente el hermano anterior )! nextsibling " El siguiente nodo ( el hermano siguiente )! ownerdocument " El objeto Document al que pertenece este nodo.! haschildnodes() " Devuelve true si este nodo tiene hijos. Modificación de Hijos (I)! appendchild(nodo) Inserta un nodo al final de la lista de hijos del nodo sobre el que invocamos appendchild. Si nodo ya tiene padre, primero se rompe el vínculo con su padre actual.! removechild(nodo) Elimina un nodo de la lista de hijos. Evidentemente, el nodo que pasamos debe estar en la lista de hijos. 2002 Borja Sotomayor 3

Modificación de Hijos (II)! insertbefore(nodo_nuevo, nodo_ref) Inserta un nuevo nodo antes de un nodo de la lista de hijos (nodo_ref).! replacechild(nodo_nuevo, nodo_viejo) Reemplaza un nodo de la lista de hijos (nodo_ref) con uno nuevo (nodo_nuevo). Atributos! A pesar de que Element dispone de unos métodos para modificar atributos, en Node también disponemos de una propiedad attributes, cuyo tipo es NamedNodeMap y que nos permite acceder a los atributos de un elemento.! También tenemos un método hasattributes() que devuelve true si el nodo tiene atributos.! Suele utilizarse con atributos muy complicados (muchos atributos, valores que combinan texto con referencias a entidades, etc.) 2002 Borja Sotomayor 4

Otros! clonenode(...) " Para crear copias de subarboles enteros.! normalize() " Fusiona nodos de texto contiguos en todos los nodos descendientes.! XML Namespaces (DOM 2):! namespaceuri! prefix! localname 2002 Borja Sotomayor 5

6.5 DOM - Element Introducción! El interfaz Element nos permite interactuar con nodos elemento de la siguiente manera:! Acceso fácil a los atributos (sin tener que manejar nodos Attr)! Acceso fácil a los elementos hijo.! Puesto que Element deriva de Node, también podemos utilizar las operaciones más genericas (childnodes, attributes, etc.) 2002 Borja Sotomayor 1

Propiedades y Métodos Básicos! tagname El nombre del elemento (de la etiqueta)! getelementsbytagname(nombre_etiqueta) Devuelve un objeto NodeList con todos los elementos (descendientes) cuyo nombre sea nombre_etiqueta Acceso a Atributos (I)! getattribute(nombre_atributo) Devuelve el valor del atributo nombre_atributo! setattribute(nombre, valor) Modifica el valor del atributo nombre para que sea igual a valor! removeattribute(nombre_atributo) Elimina el atributo nombre_atributo! hasattribute(nombre_atributo) Devuelve true si existe un atributo nombre_atributo en el elemento (DOM 2) 2002 Borja Sotomayor 2

Acceso a Atributos (II)! getattributenode(nombre_atributo) Devuelve el nodo atributo cuyo nombre sea nombre_atributo! setattributenode(nodo_atributo) Añade un nodo atributo al elemento. Si ya existe un atributo con el mismo nombre, lo reemplaza.! removeattributenode(nodo_atributo) Elimina el nodo atributo nodo_atributo Otros! Métodos para XML Namespaces:! getattributens(...)! setattributens(...)! removeattributens(...)! getattributenodens(...)! setattributenodens(...)! getelementsbytagnamens(...)! hasattributens(...) 2002 Borja Sotomayor 3

6.6 DOM - Attr Introducción! Contiene información básica sobre atributos.! No es muy habitual utilizar directamente un objeto Attr ya que el dato más importante (el valor del atributo) puede ser accedido desde el objeto Element.! Cuando se utiliza, suele ser para utilizar las funciones genéricas de Node y poder tratar ciertos casos especiales de atributos. 2002 Borja Sotomayor 1

Propiedades! name: Nombre del atributo.! value: Valor del atributo.! specified: Es true si el atributo estaba especificado en el documento XML original (si aparecía ahí con algún valor). False si el atributo fue creado en el DOM.! ownerelement: Nodo Element al que pertenece este atributo. 2002 Borja Sotomayor 2

6.7 DOM Otros Interfaces Introducción! Aparte de los interfaces vistos, el DOM tambien tiene los siguientes:! NodeList " Lista de nodos! NamedNodeMap " Lista de nodos accesible por nombre! Interfaces de Texto " CharacterData, Text, Comment, CDATASection! Otros " DocumentType, DocumentFragment, Notation, Entity, EntityReference, ProcessingInstruction, DOMImplementation, DOMException. 2002 Borja Sotomayor 1

NodeList! Representa una lista de nodos.! Cuando una operación devuelve una lista de nodos, y no es necesario acceder por nombre (basta con un índice numérico) se utiliza esta estructura. Por ejemplo: GetElementsByTagName(), GetElementById(), childnodes,...! Muy sencillo de utilizar. Tiene una propiedad y un método:! length: Número de nodos que contiene el NodeList.! item(índice):devuelve el Node que se encuentra en la posición índice de la lista (se numera desde 0) NamedNodeMap! Representa una lista de nodos.! Cuando una operación devuelve una lista de nodos, y es necesario acceder por nombre se utiliza esta estructura.! Atributos (attributes en Node)! Entidades (DTDs)! Notaciones (DTDs)! Nos permite acceder al Node directamente a través de su nombre, no utilizando un índice numérico. 2002 Borja Sotomayor 2

Interfaces de Texto! Los interfaces de texto (Text, Comment, CDATASection) tienen como interfaz padre a CharacterData.! Ninguno de los interfaces derivados añaden nada nuevo con respecto a CharacterData (excepto Text que añade un método). Basta con saber como funciona CharacterData.! Los dos atributos más destacables son:! data: El texto que contiene el nodo.! length: El tamaño del texto. Otros (I)! DocumentType: Representa parcialmente el DTD del documento.! DocumentFragment: Representa un fragmento del documento (una colección de subarboles)! Entity: Representa una entidad.! EntityReference: Representa una referencia a una entidad.! Notation: Representa una notación. 2002 Borja Sotomayor 3

Otros (II)! ProcessingInstruction: Representa una instrucción de proceso.! DOMImplementation: Encapsula información sobre la implementación del DOM. Por ejemplo, nos permite averiguar si la implementación del DOM que estamos utilizando soporta Eventos o no.! DOMException: No es un interfaz. Es la excepción que se lanza cuando se produce un error. Existen unos códigos de error predefinidos. 2002 Borja Sotomayor 4