XML en JAVA JOSÉ LUIS REDONDO GARCÍA.

Slides:



Advertisements
Presentaciones similares
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities scuola.
Advertisements

SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
Los números del 0 al cero uno dos tres cuatro cinco 6 7 8
2000.Nov.17 Introducción a XML Erich Bühler
CSS Rogelio Ferreira Escutia. 2 Hojas de estilo cascada, mayo 2010 Definición La hojas de estilo en cascada (en inglés.
Rogelio Ferreira Escutia Social Media. 2 El mundo nunca volverá a ser igual... Social Media.
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN EL COMERCIO GALLEGO (Resumen COMERCIO AL DETALLE) Noviembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
AYUDA A LA FUNCIÓN DOCENTE Internet
(eXtensible Mark-up Language)
TEMA 2 MÚLTIPLOS Y DIVISORES
02- Plan Organización Docente v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
02- PLAN DOCENTE Febrero 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
Respuestas Buscando a Nemo.
ABECEDARIO FIGURAS GEOMÉTRICAS NÚMERO
Módulo de XML Facilitador: Ing. María de los A. Ugas N.
MANEJO DE DOCUMENTOS XML EN MHP Leire Urriza Oiz.
5 pt 5 pt 5 pt 5 pt 5 pt 10 pt 10 pt 10 pt 10 pt 10 pt 15 pt 15 pt
Presentación 20 de Mayo 2009.
1 XML Extensible Markup Language HTML HyperText Markup Language normas06_01.xml.
MOVIMIENTO JOVENES DE LA CALLE CIUDAD DE GUATEMALA chi siamo quienes-somos qui sommes-nous who we are attività actividades activités activities alimentazione.
Montículos Daniel González Pérez Cristina Sánchez Aragón
1. Apoyo exterior sobre ala inferior de viga de acero
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
Funciones Excel. Parte 1. Introducción 2 Una función Excel es una fórmula o un procedimiento que se realiza en el ambiente de Visual Basic, fuera de.
Phone2Wave-Server Manual de Operación.
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Repaso del capítulo Primer Paso
Parte 3. Descripción del código de una función 1.
Curso: XML, de los datos a la presentación CAPTIVA ·
Dr. Diego Lz. de Ipiña Gz. de Artaza
DOM ( Document Object Model) Prof. Franklin Cedeño.
EL OSO APRENDIZ Y SUS AMIGOS
Conceptos Generales XML.
1 SEGUNDO FORO REGIONAL HERMOSILLO, SON Sistema Nacional de Transparencia Fiscalización y Rendición de Cuentas:
Lenguaje de Marcado Extensible XML
C REACIÓN DE B LOGS EN ESPOL Profesora: Eva María Mera Intriago Escuela Superior Politécnica del Litoral Impulsando la sociedad del conocimiento Instituto.
INFORMATICA I Arreglos 1 CLASE 17.
Informática II Prof. Dr. Gustavo Patiño MJ
Tema 1. Introducción a la programación (Lenguaje java).
1.2 Sintaxis del lenguaje Java.
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Introducción XML y WebServices.
Proyecto Fin de Carrera E.T.S. Ingeniería Informática 26 de Septiembre de 2006 DESARROLLO DE UN COMPONENTE TECLADO ALUMNO: Fco. Javier Sánchez Ramos TUTORES:
INTRODUCCIÓN A LA PROGRAMACIÓN
1  2006Universidad de Las Américas - Escuela de Ingeniería - Bases de Datos - Erik Sacre 1  2006 Universidad de Las Américas - Escuela de Ingeniería.
Programación Orientada a Objetos en Java
Medio de tele-comunicación
POO Java Módulo 3 Elementos de programas Identificadores
SUCESIONES Y PROGRESIONES.
Slide 7-1 Copyright © 2003 Pearson Education, Inc. Figure: Estructuras de datos.
DOM. DOM = Document Object Model Permite acceder y manipular las páginas XHTML DOM transforma los documentos XHTML en un conjunto de elementos llamados.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 6: Clases y Abstracción de Datos Índice del capítulo 6.1 Introducción 6.2 Estructuras 6.3 Clases.
FUNDAMENTOS DE CALIDAD EN LA GESTIÓN PÚBLICA
HTML/CSS Mi primera página.
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · Modelos de documento (DTD)
Definition Type Document (DTD)
XML Corporación Universitaria de Ciencia y Desarrollo Ing. Andrés Vargas - W3C: XML es un.
Curso: XML, de los datos a la presentación Julio de 2005 CAPTIVA · Introducción al mundo XML.
Tecnologías web. Es el método más común de intercambio de información en la world wide web, el método mediante el cual se transfieren las páginas web.
Introducción a XML por Joel Candia C Universidad Técnica Federico Santa María Departamento de Electrónica ELO-330 Programación de Sistemas.
XML. La vida antes de XML ► Comunicación ► Persistencia ► Armado de Documentos.
Tema 3: Estructura de los documentos XML, DTD Ricardo Eíto Brun Sevilla, de octubre 2002.
¿Q UÉ ES XML? XML (eXtensible Markup Language)es un meta-lenguaje de codificación de información. Los programas que utilizan el formato XML pueden intercambiar.
Transcripción de la presentación:

XML en JAVA JOSÉ LUIS REDONDO GARCÍA. FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX

Contenidos XML DTD Schema XML Parsing SAX API DOM API XSLT

¿Qué es XML? eXtensible Mark-up Language. Es un metalenguaje que permite diseñar otros lenguajes (WML, MathML, XHTML,..). Cualquiera puede desarrollar su propio lenguaje de etiquetas adecuado al tipo de aplicación que más le convenga. En realidad hay muchas tecnologías basadas en XML (XPath, XLink, XPointer, XSL, ...). XML 1.0 Specification http://www.w3.org/TR/REC-xml

HTML y XML SGML (Standard Generalized Markup Language) HTML es una aplicación de SGML XML es subconjunto más fácil de usar de SGML XHTML es una aplicación de XML

XML describe estructura y semántica <?xml version=”1.0”> <!DOCTYPE comedor SYSTEM “comedor.dtd”> <comedor> <fabricante>Ipiña Altzariak</fabricante> <mesa tipo="redonda" madera="arce"> <precio>€400</precio> </mesa> <silla madera="arce"> <cantidad>2</cantidad> <calidad>excelente</calidad> <cojin incluido="sí"> <color>azul</color> </cojin> <precio>€200</precio> </silla> </comedor>

HTML describe formato <html> <head><title>Comedor</title></head> <body> <h1>Comedor</h1> <p>Fabricante: Ipiña Altzariak</p> <ul> <li><b>Mesa redonda de madera de arce</b></li> <li><b>Dos sillas de madera de arce</b>, de excelente calidad, con un cojín azul cada una.</li> <li><b>3 sillas de madera de roble</b>.</li> </ul> </body> </html>

Ventajas XML Una de las mayores utilidades de XML es poder etiquetar los datos con su significado (self-describing data). Permite la estructuración de la información. Ello lleva el tratamiento automático de la información a límites insospechados. XML es la base de la nueva generación de aplicaciones web  intercambio de datos

Usos XML Sitios web Comunicación <-> intercambio datos Permite separar contenido y presentación Comunicación <-> intercambio datos Servicios web Como configuración de programas Deployment descriptos en servidores J2EE Ant make system

Componentes documento XML Los documentos XML constan de: Instrucciones de procesamiento (processing instructions – PI) Declaraciones de tipo de documento Comentarios Elementos Referencias a entidades Secciones CDATA

Instrucciones de procesamiento Las PI son instruccciones para el procesador del documento XML. Siempre hay al menos una PI, que pertenece al prólogo del documento: <?xml version="1.0"?> <saludo> Hola, mundo! </saludo>

Comentarios en XML Los comentarios no se procesan. Tienen la siguiente sintaxis: <!-- Esto es un comentario -->

Elementos y atributos en XML Los elementos son los que aportan estructura semántica al documento. Se delimitan por etiquetas de apertura, cierre y etiquetas sin elementos interiores (etiquetas vacías). Las etiquetas de apertura y las vacías suelen venir acompañadas de atributos, que parametrizan el elemento. El valor de los atributos siempre se encierra entre comillas, dobles o simples. <saludo tipo=“coloquial”>Hola</saludo>

Elementos vs. Atributos Demasiados atributos hacen que los documentos XML se puedan leer difícilmente. No se puede indicar estructura de documento mediante atributos <CUSTOMER LAST_NAME="Smith“ FIRST_NAME="Sam" DATE="October 15, 2001" PURCHASE="Tomatoes" PRICE=“€1.25" NUMBER="8" />

Elementos vs. Atributos (cont) <CUSTOMER> <NAME> <LAST_NAME>Smith</LAST_NAME> <FIRST_NAME>Sam</FIRST_NAME> </NAME> <DATE>October 15, 2001</DATE> <ORDERS> <ITEM> <PRODUCT>Tomatoes</PRODUCT> <NUMBER>8</NUMBER> <PRICE>$1.25</PRICE> </ITEM> </ORDERS> </CUSTOMER>

Referencias a entidades Las referencias a entidades sirven para insertar un determinado contenido definido previamente. <!ENTITY Empresa “Universidad de Deusto”> <pie>Creado por &Empresa;</pie>

Códigos de escape Existen 5 referencias a entidades predefinidas: & el carácter & < el carácter < > el carácter > &apos; el carácter ` " el caracter “ Se incluyen los caracteres del juego ISO 10646. ‘ ⼱

Secciones CDATA Las secciones CDATA (character data) contienen texto que no debe ser procesado. Se tratan como una secuencia de caracteres sin estructura. <![CDATA[<saludo>Hola, mundo!</saludo>]]>

Gramáticas en XML La gramática que restringe los elementos válidos dentro de un nuevo derivado de XML puede expresarse en forma de: DTD (Document Type Definitions) o Esquemas XML

Los DTD no son muy potentes para definir gramáticas. XML Schemas Los DTD no son muy potentes para definir gramáticas. Otra forma de hacerlo es con Esquemas XML basados en el propio XML y que soporta más tipos de datos.

Ejemplo Schema DTD : XML Schema: <!ELEMENT text (#PCDATA | emph | name)*> <!ATTLIST text timestamp NMTOKEN #REQUIRED> XML Schema: <xsd:element name="text"> <xsd:complexType mixed="true"> <xsd:sequence> <xsd:element ref="emph"/> <xsd:element ref="name"/> </xsd:sequence> <xsd:attribute name="timestamp" type="xsd:date" use="required"/> </xsd:complexType> </xsd:element>

Ejemplo Schema (cont) <?xml version="1.0"?> XML Document: <?xml version="1.0"?> <text timestamp="08:45:00.000">The deadline of <name>ISO3 assigment</name> is <emph>November 21th 2003</emph>. </text>

XML bien formado y/o XML válido Hay dos tipos de documentos XML: Bien formados: son aquellos que cumplen las reglas sintácticas de XML Válidos: son aquellos que, además de ser bien formados, siguen las reglas de una gramática (definida en un DTD o XML Schema)

Reglas para que un documento esté bien formado Debe tener un prólogo Debe tener una etiqueta raíz Las etiquetas se hallan correctamente anidadas Se usan caracteres válidos y bien aplicados Los valores de los atributos vienen encerrados entre comillas ...

Reglas para que un documento sea válido Para que un documento sea válido debe declarar el DTD o XML Schema contra el cual debe validarse. Se hace mediante DOCTYPE, pudiendo ser los DTD públicos o de sistema. <!DOCTYPE saludo SYSTEM “saludo.dtd”> <!DOCTYPE saludo PUBLIC “-//Saludos//DTD Lenguaje de saludos//ES” “http://www.deusto.es/dtds/saludo.dtd”> También se puede insertar el DTD entero en ese punto, en lugar de referenciar al fichero.

Proceso de validación documento XML

Lenguajes basados en XML Chemical Markup Language (CML) Mathematical Markup Language (MathML) Channel Definition Format (CDF) Synchronized Multimedia Integration Language (SMIL) XHTML Scalable Vector Graphics (SVG) SOAP y WSDL VoiceML Wireless Markup Language (WML)

Herramientas de XML Editores XML parsers XML Validators http://www.xmlcooktop.com/  gratis XML Spy, www.xmlspy.com XML parsers Lee un documento XML Verifica que XML está bien formado Verifican que XML es válido expat, parser written in C by James Clark (www.jclark.com) Lark, written in Java (www.textuality.com/Lark/) Apache Jakarta Xerces (www.apache.org) XML Validators XML.com's Validator based on Lark (xml.com)

¿Por qué usar XML? Un documento XML puede ser fácilmente procesado y sus datos manipulados Existen APIs para procesar esos documentos en Java, C, C++, Perl.. (y por supuesto Python) XML define datos portables al igual que Java define código portable

XML Parsing

XML Parsing (cont) SAX DOM Define interfaz dirigido por eventos (event-driven) para el procesamiento de un documento XML Definido por David Megginson y lista correo XML-DEV : http://www.megginson.com/SAX DOM Provee una representación de un documento XML en forma de un árbol Carga todo el documento XML en memoria http://www.w3.org/DOM

Características de SAX Analizador o parser SAX: Detecta cuándo empieza y termina un elemento o el documento, o un conjunto de caracteres, etc. (genera eventos) Gestiona los espacios de nombres Comprueba que el documento está bien formado Las aplicaciones necesitan implementar manejadores de los eventos notificados SAX lee secuencialmente de principio a fin, sin cargar todo el documento en memoria Ventaja: eficiencia en cuanto al tiempo y la memoria empleados en el análisis Desventaja: no disponemos de la estructura en árbol de los documentos

Java JAXP Define clase SAXParserFactory para crear una instancia de un objeto SAXParser (independiente de implementación SAX parser) factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); Objeto SAXParser define method parse() para arrancar procesamiento Es necesario registrar SAXHandlers con cada SAXParser Los 4 SAX Handlers principales son: EntityResolver – maneja entidades externas DTDHandler – maneja eventos de DTD ContentHandler – maneja contenido de un documento ErrorHandler – maneja errores

W3C Document Object Model (DOM) Documentos XML son tratados como un árbol de nodos Cada elemento es un “nodo” Los elementos hijos y el texto contenido dentro de un elemento son subnodos W3C DOM Site: http://www.w3.org/DOM/ DOM Java Language Binding: http://www.w3.org/TR/DOM-Level-2-Core/java-binding.html

Características DOM Documento se carga totalmente en memoria en una estructura de árbol Ventaja: fácil acceder a datos en función de la jerarquía de elementos, así como modificar el contenido de los documentos e incluso crearlos desde cero. Desventaja: coste en tiempo y memoria que conlleva construir el árbol

W3C XML DOM Objects Element – un elemento XML Attribute – un attributo Text – texto contenido en un elemento o atributo CDATAsection – sección CDATA EntityReference – Referencia a una entidad Entity – Indicación de una entidad XML ProcessingInstruction – Una instrucción de procesamiento Comment – Contenido de un comentario de XML Document – El objeto documento DocumentType – Referencia al elemento DOCTYPE DocumentFragment – Referencia a fragmento de documento Notation – Contenedor de una anotación

Objetos relacionados con Nodos Node – un nodo en el árbol de un documento NodeList – una lista de objetos nodos NamedNodeMap – permite interacción y acceso por nombre a una colección de atributos

Documento XML como un árbol de nodos <?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <GREETING>Hello from XML</GREETING> <MESSAGE>Welcome to Programing XML in Java</MESSAGE> </DOCUMENT>

Documento XML como un árbol de nodos (cont)

Clase DocumentBuilder Método parse() analiza el fichero entrada Método Document getDocument() devuelve el documento generado durante parsing parser.parse(fich); Document doc = parser.getDocument();

Métodos del objecto Document Attr createAttribute(String name) Crea un atributo con el nombre dado Element createElement(String tagName) Crea un elemento con el nombre dado Text createTextNode(String data) Crea un nodo de texto Element getDocumentElement() Devuelve el elemento raíz el documento Element getElementById(String elementId) Devuelve el elemento identificado por elementId NodeList getElementsByTagName(String tagname) Devuelve una lista de elementos identificados por el nombre de etiqueta dado

Métodos del interfaz Node NamedNodeMap getAttributes() Devuelve lista de atributos en un nodo Node getFirstChild() Devuelve el primer hijo de este nodo Node getFirstChild() Devuelve el último hijo de este nodo NodeList getChildNodes() Devuelve todos los hijos de este nodo Node getParentNode() Devuelve nodo padre del nodo actual short getNodeType() Devuelve tipo de nodo actual String getNodeName() Devuelve nombre nodo String getNodeValue() Devuelve contenido nodo

Métodos del interfaz NodeList y NamedNodeMap int getLength() Devuelve número de nodos en lista Node item(int index) Devuelve el nodo identificado por index en una colección NamedNodeMap Node getNamedItem(String name) Recupera un nodo dado su nombre

Ejemplo DOM I <?xml version="1.0" encoding="iso-8859-1"?> <Peliculas> <Pelicula codigo='1' titulo='Lo que el viento se llevó' director='Victor Fleming' actores='Clark Gable, Vivien Leigh, Leslie Howard'/> <Pelicula codigo='2' titulo='Los Otros' director='Alejandro Amenabar' actores='Nicole Kidman'/> <Pelicula codigo="5" titulo="Malena" director="Giuseppe Tornatore" actores="Monica Bellucci, Giuseppe Sulfaro"/> </Peliculas>

Ejemplo DOM II

Ejemplo DOM III import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.io.IOException; public class EjemploDOM { public static void main(String[] args) { ... DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance(); // Crear nueva instancia de DOMBuilder a través factoria DocumentBuilder parser = fact.newDocumentBuilder(); parser.parse(fich); Document doc = parser.getDocument(); EjemploDOM.tratarNodo(doc); }

Ejemplo DOM IV public static void tratarNodo(Node nodo) { switch (nodo.getNodeType()) { case Node.DOCUMENT_NODE: break; case Node.ELEMENT_NODE: case Node.ATTRIBUTE_NODE: case Node.TEXT_NODE: case Node.CDATA_SECTION_NODE: case Node.PROCESSING_INSTRUCTION_NODE: case Node.ENTITY_REFERENCE_NODE: case Node.DOCUMENT_TYPE_NODE: }

Ejemplo DOM V case Node.DOCUMENT_NODE: System.out.println("<xml version=\"1.0\">"); Document doc = (Document)nodo; tratarNodo(doc.getDocumentElement()); break;