fundamentos bÁsicos de xml y librerÍas disponibles para tratarlo en java xml en java josÉ luis...
TRANSCRIPT
![Page 1: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/1.jpg)
FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA
XML en JAVA
JOSÉ LUIS REDONDO GARCÍA. JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEXGRUPO QUERCUS ENGINEERING SOFTWARE, UEX
![Page 2: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/2.jpg)
Contenidos2
XML DTD Schema
XML Parsing SAX API DOM API
XSLT
![Page 3: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/3.jpg)
¿Qué es XML?3
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 Specificationhttp://www.w3.org/TR/REC-xml
![Page 4: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/4.jpg)
HTML y XML4
SGML (Standard Generalized Markup Language)
HTML es una aplicación de SGML XML es subconjunto más fácil de usar de
SGMLXHTML es una aplicación de XML
![Page 5: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/5.jpg)
XML describe estructura y semántica5
<?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>
![Page 6: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/6.jpg)
HTML describe formato6
<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>
![Page 7: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/7.jpg)
Ventajas XML7
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
![Page 8: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/8.jpg)
Usos XML8
Sitios web 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
![Page 9: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/9.jpg)
Componentes documento XML9
Los documentos XML constan de: Instrucciones de procesamiento (processing
instructions – PI) Declaraciones de tipo de documento Comentarios Elementos Referencias a entidades Secciones CDATA
![Page 10: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/10.jpg)
Instrucciones de procesamiento10
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>
![Page 11: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/11.jpg)
Comentarios en XML11
Los comentarios no se procesan.Tienen la siguiente sintaxis:
<!-- Esto es un comentario -->
![Page 12: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/12.jpg)
Elementos y atributos en XML12
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>
![Page 13: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/13.jpg)
Elementos vs. Atributos13
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" />
![Page 14: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/14.jpg)
Elementos vs. Atributos (cont)14
<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>
![Page 15: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/15.jpg)
Referencias a entidades15
Las referencias a entidades sirven para insertar un determinado contenido definido previamente.
<!ENTITY Empresa “Universidad de Deusto”>
<pie>Creado por &Empresa;</pie>
![Page 16: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/16.jpg)
Códigos de escape16
Existen 5 referencias a entidades predefinidas: & el carácter & < el carácter < > el carácter > ' el carácter ` " el caracter “
Se incluyen los caracteres del juego ISO 10646.‘⼱
![Page 17: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/17.jpg)
Secciones CDATA17
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>]]>
![Page 18: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/18.jpg)
Gramáticas en XML18
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
![Page 19: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/19.jpg)
XML Schemas19
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.
![Page 20: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/20.jpg)
Ejemplo Schema20
DTD :<!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>
![Page 21: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/21.jpg)
Ejemplo Schema (cont)21
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>
![Page 22: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/22.jpg)
XML bien formado y/o XML válido22
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)
![Page 23: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/23.jpg)
Reglas para que un documento esté bien formado
23
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 ...
![Page 24: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/24.jpg)
Reglas para que un documento sea válido
24
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.
![Page 25: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/25.jpg)
Proceso de validación documento XML25
¿WellFormed?
DocumentoXML
DTDError: Documento
XML no válidoError: DocumentoXML mal formado
Procesamiento dela información
¿Valid?
¿DTD?
(opcional) si
no
si
si
no
no
![Page 26: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/26.jpg)
Lenguajes basados en XML26
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 VoiceMLWireless Markup Language (WML)
![Page 27: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/27.jpg)
Herramientas de XML27
Editores 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 Verifican que XML es válido
XML.com's Validator based on Lark (xml.com)
![Page 28: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/28.jpg)
¿Por qué usar XML?28
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
![Page 29: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/29.jpg)
XML Parsing29
DocumentoXML
XML DTDXML Schema
Parser XMLAplicación
XML
![Page 30: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/30.jpg)
XML Parsing (cont)30
SAX 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
![Page 31: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/31.jpg)
Características de SAX31
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
![Page 32: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/32.jpg)
Java JAXP32
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
![Page 33: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/33.jpg)
W3C Document Object Model (DOM)33
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 subnodosW3C DOM Site: http://www.w3.org/DOM/ DOM Java Language Binding:
http://www.w3.org/TR/DOM-Level-2-Core/java-binding.html
![Page 34: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/34.jpg)
Características DOM34
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
![Page 35: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/35.jpg)
W3C XML DOM Objects35
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
![Page 36: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/36.jpg)
Objetos relacionados con Nodos36
Node – un nodo en el árbol de un documentoNodeList – una lista de objetos nodos NamedNodeMap – permite interacción y
acceso por nombre a una colección de atributos
![Page 37: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/37.jpg)
Documento XML como un árbol de nodos
37
<?xml version="1.0" encoding="UTF-8"?> <DOCUMENT> <GREETING>Hello from XML</GREETING> <MESSAGE>Welcome to Programing XML in
Java</MESSAGE> </DOCUMENT>
![Page 38: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/38.jpg)
Documento XML como un árbol de nodos (cont)
38
![Page 39: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/39.jpg)
Clase DocumentBuilder39
Método parse() analiza el fichero entradaMétodo Document getDocument()
devuelve el documento generado durante parsing
parser.parse(fich);Document doc = parser.getDocument();
![Page 40: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/40.jpg)
Métodos del objecto Document40
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
![Page 41: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/41.jpg)
Métodos del interfaz Node41
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
![Page 42: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/42.jpg)
Métodos del interfaz NodeList y NamedNodeMap
42
NodeList int getLength()
Devuelve número de nodos en lista Node item(int index)
Devuelve el nodo identificado por index en una colecciónNamedNodeMap
int getLength()Devuelve número de nodos en lista
Node getNamedItem(String name)Recupera un nodo dado su nombre
Node item(int index)Devuelve el nodo identificado por index en una colección
![Page 43: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/43.jpg)
Ejemplo DOM I43
<?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>
![Page 44: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/44.jpg)
Ejemplo DOM II44
Root
Películas
...Película
titulo=’Lo que elviento se llevó’codigo=1
actores=’Clark Gable, VivienLeigh, Leslie Howard’
diirector=’Victor Fleming’
Película
titulo=’Malena’codigo=5
actores=’Monica Bellucci,Giuseppe Sulfaro’
diirector=’GiuseppeTornatore’
![Page 45: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/45.jpg)
Ejemplo DOM III45
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); ... }}
![Page 46: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/46.jpg)
Ejemplo DOM IV46
public static void tratarNodo(Node nodo) { switch (nodo.getNodeType()) { case Node.DOCUMENT_NODE: break; case Node.ELEMENT_NODE: break; case Node.ATTRIBUTE_NODE: break; case Node.TEXT_NODE: break; case Node.CDATA_SECTION_NODE: break; case Node.PROCESSING_INSTRUCTION_NODE: break; case Node.ENTITY_REFERENCE_NODE: break; case Node.DOCUMENT_TYPE_NODE: break; }}
![Page 47: FUNDAMENTOS BÁSICOS DE XML Y LIBRERÍAS DISPONIBLES PARA TRATARLO EN JAVA XML en JAVA JOSÉ LUIS REDONDO GARCÍA. GRUPO QUERCUS ENGINEERING SOFTWARE, UEX](https://reader033.vdocuments.site/reader033/viewer/2022061216/54a908ae497959eb6d8b545f/html5/thumbnails/47.jpg)
Ejemplo DOM V47
case Node.DOCUMENT_NODE: System.out.println("<xml version=\"1.0\">"); Document doc = (Document)nodo; tratarNodo(doc.getDocumentElement()); break;