SlideShare una empresa de Scribd logo
1 de 53
Tema 3. XML 
Processing APIs 
Web Services 6. 
Tema 3. XML Processing APIs 12/02/2013 
1
Índice 
1. JAXP 
1.1 SAX 2 
1.2 DOM 2 
1.3 XSLT 
1.4 StAX 
2. JAXB 
2.1 XML-to-Java 
2.2 Java-to-XML 
2.3 SAAJ 
Tema 3. XML Processing APIs 12/02/2013 
2
3.1. JAXP 
Introducción 
• Java API for XML Processing (JAXP) se utiliza para el 
procesamiento de datos XML. 
• Utiliza 
• SAX (Simple API for) 
• DOM (Document Object Model 
• Compatilbe con el estándar eXtensible Stylesheet Language 
Transformations (XSLT) 
• proporciona soporte para namespaces -> DTDs 
• A partir de la versión 1.4, implementa el estándar Streaming 
API for XML (StAX). 
Tema 3. XML Processing APIs 12/02/2013 
3
3.1.1 SAX 
Introducción 
• Arquitectura basada en eventos. 
• Un analizador SAX lee un XML como un flujo de datos. 
• Según va leyendo envía eventos a un objeto de una clase que 
implemente la interfaz SAX. 
• Utiliza varias interfaces, como ContentHandler 
Tema 3. XML Processing APIs 12/02/2013 
4
3.1.1 SAX 
Eventos I 
• startDocument() 
• Evento producido al empezar el documento. 
• endDocument() 
• Evento producido al finalizar el documento. 
• startPrefixMapping(String prefix, String uri) 
• Empieza la lectura de un prefijo. 
• endPrefixMapping(String prefix) 
• Finaliza la lectura de un prefijo. 
• startElement(String uri, String localName, String qName, Attributes 
atts) 
• Empieza la lectura de un elemento. Los parámetros que recibe son: 
• uri: URI del espacio de nombres al que pertenece el elemento. 
• localName: nombre del elemento sin el prefijo. 
• qName : nombre completo del elemento, es decir, el prefijo más el 
localName. 
• atts: conjunto de atributos del elemento. 
Tema 3. XML Processing APIs 12/02/2013 
5
3.1.1 SAX 
Eventos y II 
• endElement(String uri, String localName, String qName) 
• Finaliza la lectura de un elemento 
• characters(char[] ch, int start, int length) 
• Lectura del contenido de un elemento. Recibe un array de chars con 
una posición inicial y la longitud. 
• ignorableWhitespace(char[] ch, int start, int length) 
• Evento lanzado cuando se leen un character en blanco que se puede 
ignorar 
• processingInstruction(String target, String data) 
• Evento lanzado al procesar una instrucción 
• skippedEntity(String name) 
Tema 3. XML Processing APIs 12/02/2013 
• Tiene lugar en algunos analizadores que se saltan 
las entidades cuando no están validando, pero es difícil encontrar 
casos así. 6
3.1.1 SAX 
Como parsear un XML con SAX. 
XMLReader reader = XMLReaderFactory.createXMLReader(); 
ContentHandler handler = new MiHandler(); 
reader.setContentHandler(handler); 
reader.parse(ARCHIVO_XML); 
Tema 3. XML Processing APIs 12/02/2013 
7
3.1.2 DOM 
Introducción 
• Conjunto de clases e interfaces que modela XML como un 
árbol de objetos(nodos). 
• Cuando DOM analiza un documento XML, lee el contenido y 
construye un grafo de objetos que refleja la estructura del 
XML. 
Tema 3. XML Processing APIs 12/02/2013 
8
3.1.2 DOM 
Elementos 
• Cada elemento en el documento XML se representa mediante 
una instancia de tipo Element. 
• Cada uno de los componentes XML tiene su correspondiente tipo 
DOM. Su supertipo común es la interfaz org.w3c.dom.Node. 
• atributos - Attr 
• comentarios – Comment 
• texto - Text, secciones CDATA a CDATASection, y así sucesivament 
• Cuando un parseador DOM procesa un documento XML con 
éxito, devuelve un objeto org.w3c.dom.Document. 
• Document proporciona acceso al elemento raíz, que a su vez da 
acceso a todos los elementos 
Tema 3. XML Processing APIs 12/02/2013 
9
• Utiliza DocumentBuilderFactory y DocumentBuilder. 
• Estas clases proporcionan abstracciones para los parseadores 
DOM y cómo proporcionarles documentos XML. 
• DocumentBuilderFactory es una factoría utilizada para crear 
parseadores DOM. 
• devuelve una instancia de DocumentBuilder, que representa el 
parseador, mediante su método el 
DocumentBuilderFactory.newInstance(). 
• En el caso de querer crear un documento utilizamos 
DOMImplementation,. 
• Se obtiene con DocumentBuilder 
• Prepara el nuevo Document con el nombre cualificado y el 
espacio de nombres XML del Element raíz. 
Tema 3. XML Processing APIs 12/02/2013 
10 
3.1.2 DOM 
Como parsear un XML (I)
3.1.2 DOM 
Como parsear un XML (II) 
DocumentBuilder builder factory.newDocumentBuilder = (); 
DOMImplementation domImpl builder.getDOMImplementation = (); 
Documento xmlDoc domImpl.createDocument = (SOAP_NS, "soap: 
Envelope", null); 
Element root = xmlDoc.getDocumentElement(); 
• Una vez obtenido root podemos empezar a añadirle otros 
elementos. 
Tema 3. XML Processing APIs 12/02/2013 
11
• Tipo de dato primario de DOM. 
• Representa un nodo en el árbol del documento 
• Posee estas constantes que indican el tipo de nodo: 
• public static final short ATTRIBUTE_NODE; 
• public static final short CDATA_SECTION_NODE; 
• public static final short COMMENT_NODE; 
• public static final short DOCUMENT_FRAGMENT_NODE; 
• public static final short DOCUMENT_NODE; 
• public static final short DOCUMENT_TYPE_NODE; 
• public static final short ELEMENT_NODE; 
• public static final short ENTITY_NODE; 
• public static final short ENTITY_REFERENCE_NODE; 
• public static final short NOTATION_NODE; 
• public static final short PROCESSING_INSTRUCTION_NODE; 
Tema 3. XML Processing APIs 12/02/2013 
12 
3.1.2 DOM 
La interfaz Node
3.1.2 DOM 
La interfaz Node. Métodos. (I) 
• Métodos que dependen del tipo de nodo 
• getNodeType (): Nos indica el tipo de nodo. 
• Node.getNodeName() y Node.getNodeValue(): Nos 
devuelven diferentes valores en función de la siguiente tabla. 
Tema 3. XML Processing APIs 12/02/2013 
13 
Interface nodeName nodeValue 
Attr name of attribute value of attribute 
CDATASection "#cdata-section" content of the CDATA Section 
Comment "#comment" content of the comment 
Document "#document" null 
DocumentFragment "#document-fragment" 
null 
DocumentType document type name null 
Element tag name null 
Entity entity name null 
EntityReference name of entity 
referenced 
null 
Notation notation name null 
ProcessingInstructio 
n 
target entire content excluding the 
target 
Text "#text" content of the text node
• Metodos de nombres XML 
• Sólo se asignan nombres XML a los tipos Element y Attr. 
• getLocalName() 
• getNamespaceURI 
• getPrefix() 
• setPrefix() 
• Métodos para los atributos 
• hasAttributes(): devuelve true si el nodo tiene atributos. solo los nodos 
Element devolverán true; el resto false. 
• getAttributes(): devuelve un mapa de los atributos de un elemento 
específico, junto con sus valores 
Tema 3. XML Processing APIs 12/02/2013 
14 
3.1.2 DOM 
La interfaz Node. Métodos. (II)
• Metodos para navegar 
• getParent(): devueleve el padre de un elemento. Puede ser otro 
elemento o, en el caso del elemento raíz, un documento. 
• getPreviousSibling() o getNextSibling(): devuelve el hermano 
anterior o siguiente. (Nodos que comparten padre) 
• getChildNodes(): devuelve la lista de nodos hijos en un NodeList. 
• getLastChild(): devuelve el ultimo hijo 
• getFirstChild().: devuelve el primer hijo. 
Tema 3. XML Processing APIs 12/02/2013 
15 
3.1.2 DOM 
La interfaz Node. Métodos. (III)
• Metidos de gestión de hijos. 
• appendChild() agrega un nodo al final de la lista de hijos de un 
Node. 
• insertBefore(): inserta un nuevo nodo en la lista de hijos justo 
antes del hermano designado. 
• removeChild() elimina el nodo del árbol 
• replaceNodes() reemplaza un nodo a otro. 
• no se puede asignar a un objeto de otro documento. 
• No son visibles en el árbol, pero son todavía propiedad del mismo 
documento. 
Tema 3. XML Processing APIs 12/02/2013 
16 
3.1.2 DOM 
La interfaz Node. Métodos. (IV)
• API de parseo por “pull” del flujo XML, orientada a 
eventos, capaz de leer y escribir XML. 
• “pull” significa que es la clase manejador (handle) llama al 
parseador, y no al revés. En otras palabras, el manejador de "tira" 
de los eventos XML del analizador. 
• Se puede detener el análisis en cualquier momento. 
• StAX es más simple que SAX y también tiene una gestión de 
memoria más eficiente que DOM. 
• Stax se combina de dos APIs diferentes: API cursor y API 
iterator. 
Tema 3. XML Processing APIs 12/02/2013 
17 
3.1.3 StAX 
Introducción.
• Representa un cursor con el que se puede recorrer un documento XML. 
• Siempre se mueve hacia adelante, nunca hacia atrás. 
• Utiliza XMLStreamReader y XMLStreamWriter. 
• XMLStreamReader incluye métodos para acceder a toda la información posible del XML 
public interface XMLStreamReader { 
public int next() throws XMLStreamException; 
public boolean hasNext() throws XMLStreamException; 
public String getText(); 
public String getLocalName(); 
public String getNamespaceURI(); 
// ... other methods not shown 
} 
• XMLStreamWriter 
public interface XMLStreamWriter { 
public void writeStartElement(String localName) throws XMLStreamException; 
public void writeEndElement() throws XMLStreamException; 
public void writeCharacters(String text) throws XMLStreamException; 
// ... other methods not shown 
} 
• La API cursor tiene cierto parecido con SAX. 
• dispone de métodos para acceder directamente al flujo de caracteres. 
• Los métodos de la API devolven información XML como string, lo que minimiza los requisitos de 
memoria. 
Tema 3. XML Processing APIs 12/02/2013 
18 
CURSOR API 
3.1.3 StAX 
API Cursor
• Representa un flujo de un documento XML como un 
conjunto discreto de eventos. 
• Estos eventos son lanzados por el parseador en el orden en que se leen 
del XML. 
• El evento base se denomina XMLEvent, existiendo 
subinterfaces para cada tipo de evento. 
• XMLEventReader: XMLEventReader contiene cinco métodos, el 
más importante es nextEvent(). implementa java.util.Iterator 
• XMLEventWriter. Implementa java.util.Iterator. 
Tema 3. XML Processing APIs 12/02/2013 
19 
3.1.3 StAX 
API Iterator
• Cosas que se pueden hacer con iterator y no con cursor: 
• Los objetos creados a partir de las subclases XMLEvent son 
inmutables, y pueden ser utilizados en arrays, listas y mapas, y puede 
transmitirse a través de la aplicación, incluso después de que el 
parser haya azanzado a eventos posteriores. 
• Se puede crear subtipos de XMLEvent que, o sean completamente 
nuevos, o ampliaciones de elementos existentes, pero con métodos 
adicionales. 
• Se puede agregar y quitar eventos de una secuencia de eventos XML 
de una manera mucho más simple que con la API cursor. 
• Recomendaciones generales 
• Si el rendimiento es una prioridad importante, la API cursor es más 
eficiente. 
• Si desea crear flujos de procesamiento de XML, utilice la API iterator. 
• Si desea modificar la secuencia de eventos, utilice la API iterator. 
• En general se recomienda utilizar la API de iterator porque es más 
flexible y extensible. 
Tema 3. XML Processing APIs 12/02/2013 
20 
3.1.3 StAX 
Comparativa
• Define 
• una gramática: hojas estilo XSLT 
• reglas de procesado para el mapeo de documentos en un formato 
a documentos en otro formato. 
• Lo importante de XSLT es quedarnos con que permite la 
escritura de datos XML en un archivo, convertir datos 
XML a otros formatos y, junto con SAX, la conversión de 
los datos heredados a XML. 
Tema 3. XML Processing APIs 12/02/2013 
21 
3.1.4 XSLT 
Introducción
Comparativa 
Feature StAX SAX DOM 
API Type Pull, streaming Push, streaming In memory tree 
Ease of Use High Medium High 
XPath Capability No No Yes 
CPU and Memory Efficiency Good Good Varies 
Forward Only Yes Yes No 
Read XML Yes Yes Yes 
Write XML Yes No Yes 
Create, Read, Update, Delete No No Yes 
Tema 3. XML Processing APIs 12/02/2013 
22
• Mapear XML a objetos y cargarlos en memoria 
• Este mapeo se realiza de acuerdo a un esquema. 
• Generar clases que representan elementos de un XML 
• Desarrolladores no tienen que escribir los objetos 
• Básicamente nos permite realizar las operaciones que se 
muestran a continuación: 
• Con JAXB ya no tenemos que aprender lo que nos ha 
explicado Chema de SAX y DOM. Lo siento Chema!! 
Tema 3. XML Processing APIs 12/02/2013 
23 
3.1.4 JAXB 
¿XML BINDING?
• Crear/Leer/Modificar XML 
• Validar entradas de usuario basado en las restricciones 
impuestas en un XML schema. 
Tema 3. XML Processing APIs 12/02/2013 
24 
3.1.4 JAXB 
CASOS DE USO
• Dado un Schema “hello.xsd” 
• Ejecutamos comando xjc –p hello hello.xsd -p para 
indicar el directorio de destino hello 
Tema 3. XML Processing APIs 12/02/2013 
25 
3.1.4 JAXB 
HELLO WORLD
• Clases generadas 
Tema 3. XML Processing APIs 12/02/2013 
26 
3.1.4 JAXB 
HELLO WORLD
• Usar las clases y obtener resultado 
Tema 3. XML Processing APIs 12/02/2013 
27 
3.1.4 JAXB 
HELLO WORLD
• Con las anotaciones defines el XML Schema 
Tema 3. XML Processing APIs 12/02/2013 
28 
3.1.4 JAXB 
EJEMPLO CON ANOTACIONES
• Objeto a XML 
Tema 3. XML Processing APIs 12/02/2013 
29 
3.1.4 JAXB 
EJEMPLO CON ANOTACIONES
• XML a Objeto 
Tema 3. XML Processing APIs 12/02/2013 
30 
3.1.4 JAXB 
EJEMPLO CON ANOTACIONES
Tema 3. XML Processing APIs 12/02/2013 
31 
3.1.4 JAXB 
EJEMPLO CON ANOTACIONES
Tema 3. XML Processing APIs 12/02/2013 
32 
3.1.4 JAXB 
SAAJ 
• API que permite la construcción y lectura de mensajes SOAP 
• Es una API de más bajo nivel que JAX-RPC y JAX-WS 
• Permite el envío de adjuntos en el mensaje SOAP. Una imagen 
jpg por ejemplo.
Tema 3. XML Processing APIs 12/02/2013 
33 
3.1.4 JAXB 
SAAJ -Mensaje SOAP sin adjuntos
Tema 3. XML Processing APIs 12/02/2013 
34 
3.1.4 JAXB 
SAAJ -Mensaje SOAP con adjuntos
Tema 3. XML Processing APIs 12/02/2013 
35 
3.1.4 JAXB 
SAAJ - CREANDO UN MENSAJE SOAP 
• CLASE: javax.xml.soap.MessageFactory 
• Resultado: 
• Acceder a los elementos del mensaje 
• A través del objeto SOAPEnvelope(javax.xml.soap) 
• A través del objeto SOAPMessage
Tema 3. XML Processing APIs 12/02/2013 
36 
3.1.4 JAXB 
SAAJ - CREANDO UN MENSAJE SOAP 
• CLASE: javax.xml.soap.MessageFactory 
• Resultado: 
• Acceder a los elementos del mensaje 
• A través del objeto SOAPEnvelope(javax.xml.soap) 
• A través del objeto SOAPMessage
Tema 3. XML Processing APIs 12/02/2013 
37 
3.1.4 JAXB 
SAAJ - CREANDO UN MENSAJE SOAP 
• Añadir elemento al Body del mensaje 
• Resultado:
Tema 3. XML Processing APIs 12/02/2013 
38 
3.1.4 JAXB 
SAAJ - CREANDO UNA CONEXIÓN PARA EL 
MENSAJE SOAP 
connection.close(); 
• Recuperar el mensaje 
while (iterator.hasNext()) 
{ 
SOAPBodyElement bodyElement =(SOAPBodyElement)iterator.next(); 
String lastPrice = bodyElement.getValue(); 
System.out.print("The last price for SUNW is "); 
System.out.println(lastPrice); 
}
Tema 3. XML Processing APIs 12/02/2013 
39 
3.1.4 JAXB 
SAAJ - CREANDO UN MENSAJE SOAP 
• Añadir elemento al Body del mensaje 
• Resultado:
Tema 3. XML Processing APIs 12/02/2013 
40 
3.1.4 JAXB 
SAAJ - AÑADIENDO ADJUNTOS AL MENSAJE 
SOAP 
• Se puede añadir cualquier contenido 
• Añadiendo una imagen:
Tema 3. XML Processing APIs 12/02/2013 
41 
3.1.4 JAXB 
Referencias 
• Referencias: 
• JAXB 
• http://docs.oracle.com/javase/tutorial/jaxb/intro/index.html 
• http://jaxb.java.net/tutorial/ 
• http://javapapers.com/jee/jaxb-tutorial 
• SAAJ 
• http://docs.oracle.com/cd/E19575-01/819-3669/bnbhr/index.html 
• http://oreilly.com/catalog/javawsian/chapter/ch03.pdf
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
42 
XSLT
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
43 
DOM
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
44 
SAX
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
45 
TRUE
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
Short 
Int 
46
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
XMLGregorianCalendar 
XMLGregorianCalendar 
Object 
47
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
48 
JAXB
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
49 
TRUE
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
50 
TRUE
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
51 
TRUE
Preguntas 
Tema 3. Stateful Session Beans 13/03/12 
52 
TRUE
Tema 3. Stateful Session Beans 13/03/12 
53

Más contenido relacionado

Destacado

Xml Java
Xml JavaXml Java
Xml Javacbee48
 
iProjectSolutions - start your project digital document workflow
iProjectSolutions - start your project digital document workflowiProjectSolutions - start your project digital document workflow
iProjectSolutions - start your project digital document workflowKevin Rowe
 
From data to business intelligence
From data to business intelligenceFrom data to business intelligence
From data to business intelligencenjaffe
 
Infinity Microsoft Business Intelligence Overview
Infinity Microsoft Business Intelligence OverviewInfinity Microsoft Business Intelligence Overview
Infinity Microsoft Business Intelligence OverviewMichael Hammons
 
Digital Document Storage
Digital Document StorageDigital Document Storage
Digital Document StorageMichael Burgess
 
Business intelligence-success
Business intelligence-successBusiness intelligence-success
Business intelligence-successFaison Group
 
AMBITION UNBRIDLED - A SERMON
AMBITION UNBRIDLED - A SERMONAMBITION UNBRIDLED - A SERMON
AMBITION UNBRIDLED - A SERMONU2CAN
 
How BI Competency Centers Drive Enhanced Reporting and Analytics
How BI Competency Centers Drive Enhanced Reporting and AnalyticsHow BI Competency Centers Drive Enhanced Reporting and Analytics
How BI Competency Centers Drive Enhanced Reporting and AnalyticsCognizant
 
Business Intelligence Competency Centers Best Practices
Business Intelligence Competency Centers Best PracticesBusiness Intelligence Competency Centers Best Practices
Business Intelligence Competency Centers Best PracticesCapgemini
 
Social Media In Schools
Social Media In Schools Social Media In Schools
Social Media In Schools Michael Burgess
 
Planning Business Intelligence - English Presentation
Planning Business Intelligence - English PresentationPlanning Business Intelligence - English Presentation
Planning Business Intelligence - English PresentationHamideh Iraj
 
Streamline Your SharePoint Document Management Strategy
Streamline Your SharePoint Document Management StrategyStreamline Your SharePoint Document Management Strategy
Streamline Your SharePoint Document Management Strategymalonem2
 
Document management strategy 2015
Document management strategy 2015Document management strategy 2015
Document management strategy 2015Michael Burgess
 
Best Practices for BI Implementations
Best Practices for BI ImplementationsBest Practices for BI Implementations
Best Practices for BI Implementationsalero546
 
Business Intelligence Analysis - The key to organisational and business success
Business Intelligence Analysis - The key to organisational and business successBusiness Intelligence Analysis - The key to organisational and business success
Business Intelligence Analysis - The key to organisational and business successcssa
 

Destacado (20)

Xml
XmlXml
Xml
 
Grupo1
Grupo1Grupo1
Grupo1
 
Oracle xmldb
Oracle xmldbOracle xmldb
Oracle xmldb
 
Java and XML
Java and XMLJava and XML
Java and XML
 
Xml Java
Xml JavaXml Java
Xml Java
 
iProjectSolutions - start your project digital document workflow
iProjectSolutions - start your project digital document workflowiProjectSolutions - start your project digital document workflow
iProjectSolutions - start your project digital document workflow
 
From data to business intelligence
From data to business intelligenceFrom data to business intelligence
From data to business intelligence
 
Infinity Microsoft Business Intelligence Overview
Infinity Microsoft Business Intelligence OverviewInfinity Microsoft Business Intelligence Overview
Infinity Microsoft Business Intelligence Overview
 
Digital Document Storage
Digital Document StorageDigital Document Storage
Digital Document Storage
 
Business intelligence-success
Business intelligence-successBusiness intelligence-success
Business intelligence-success
 
AMBITION UNBRIDLED - A SERMON
AMBITION UNBRIDLED - A SERMONAMBITION UNBRIDLED - A SERMON
AMBITION UNBRIDLED - A SERMON
 
How BI Competency Centers Drive Enhanced Reporting and Analytics
How BI Competency Centers Drive Enhanced Reporting and AnalyticsHow BI Competency Centers Drive Enhanced Reporting and Analytics
How BI Competency Centers Drive Enhanced Reporting and Analytics
 
Business Intelligence Competency Centers Best Practices
Business Intelligence Competency Centers Best PracticesBusiness Intelligence Competency Centers Best Practices
Business Intelligence Competency Centers Best Practices
 
Social Media In Schools
Social Media In Schools Social Media In Schools
Social Media In Schools
 
Planning Business Intelligence - English Presentation
Planning Business Intelligence - English PresentationPlanning Business Intelligence - English Presentation
Planning Business Intelligence - English Presentation
 
Streamline Your SharePoint Document Management Strategy
Streamline Your SharePoint Document Management StrategyStreamline Your SharePoint Document Management Strategy
Streamline Your SharePoint Document Management Strategy
 
Document Management
Document ManagementDocument Management
Document Management
 
Document management strategy 2015
Document management strategy 2015Document management strategy 2015
Document management strategy 2015
 
Best Practices for BI Implementations
Best Practices for BI ImplementationsBest Practices for BI Implementations
Best Practices for BI Implementations
 
Business Intelligence Analysis - The key to organisational and business success
Business Intelligence Analysis - The key to organisational and business successBusiness Intelligence Analysis - The key to organisational and business success
Business Intelligence Analysis - The key to organisational and business success
 

Similar a Tema 3 xml processing ap is

5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XML5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Procesamiento de XML en C#
Procesamiento de XML en C#Procesamiento de XML en C#
Procesamiento de XML en C#Jordan-P
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)Laura Folgado Galache
 
Working with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfWorking with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfeudilac1
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......SaulSalinasNeri
 
Sockets y Threads en Java
Sockets y Threads en JavaSockets y Threads en Java
Sockets y Threads en JavaJose Jordan
 
Maria taipe..presentaciones
Maria taipe..presentacionesMaria taipe..presentaciones
Maria taipe..presentacionesmary taipe
 
Maria taipe..presentaciones
Maria taipe..presentacionesMaria taipe..presentaciones
Maria taipe..presentacionesmary taipe
 
Proveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6aProveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6afanyto
 
11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet
11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet
11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos AdonetLuis Fernando Aguas Bucheli
 
Metodos de entrada y Salida
Metodos de entrada y SalidaMetodos de entrada y Salida
Metodos de entrada y SalidaCristian Andres
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Ronald Cuello
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones JavaIker Canarias
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-DesarrolloLuis Fernando Aguas Bucheli
 
programacion para la web (Dom)
programacion para la web (Dom)programacion para la web (Dom)
programacion para la web (Dom)Ivana Ibarra
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con HibernateMauro Gomez Mejia
 

Similar a Tema 3 xml processing ap is (20)

5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XML5/9 Curso JEE5, Soa, Web Services, ESB y XML
5/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Procesamiento de XML en C#
Procesamiento de XML en C#Procesamiento de XML en C#
Procesamiento de XML en C#
 
6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)6. Utilización del modelo de objetos del documento (DOM)
6. Utilización del modelo de objetos del documento (DOM)
 
Thread
ThreadThread
Thread
 
Working with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdfWorking with Files, Streams, and Serialization.pdf
Working with Files, Streams, and Serialization.pdf
 
Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......Programación_del_lado_del_servidor......
Programación_del_lado_del_servidor......
 
Sockets y Threads en Java
Sockets y Threads en JavaSockets y Threads en Java
Sockets y Threads en Java
 
Web services y java
Web services y javaWeb services y java
Web services y java
 
Maria taipe..presentaciones
Maria taipe..presentacionesMaria taipe..presentaciones
Maria taipe..presentaciones
 
Maria taipe..presentaciones
Maria taipe..presentacionesMaria taipe..presentaciones
Maria taipe..presentaciones
 
Proveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6aProveedor act1 uni2_daw_6a
Proveedor act1 uni2_daw_6a
 
11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet
11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet
11- Unidad 2: Aplicaciones Windows Forms- 2.3 Acceso a datos Adonet
 
Metodos de entrada y Salida
Metodos de entrada y SalidaMetodos de entrada y Salida
Metodos de entrada y Salida
 
M18
M18M18
M18
 
Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)Persistencia De Objetos(Hibernate)
Persistencia De Objetos(Hibernate)
 
Integración de aplicaciones Java
Integración de aplicaciones JavaIntegración de aplicaciones Java
Integración de aplicaciones Java
 
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
7-Unidad 2: Diseño de Vista-2.3 Introducción Web Services-Desarrollo
 
programacion para la web (Dom)
programacion para la web (Dom)programacion para la web (Dom)
programacion para la web (Dom)
 
Diapositivas objeto statement
Diapositivas objeto statementDiapositivas objeto statement
Diapositivas objeto statement
 
Persistencia de objetos con Hibernate
Persistencia de objetos con HibernatePersistencia de objetos con Hibernate
Persistencia de objetos con Hibernate
 

Último

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 

Último (20)

Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 

Tema 3 xml processing ap is

  • 1. Tema 3. XML Processing APIs Web Services 6. Tema 3. XML Processing APIs 12/02/2013 1
  • 2. Índice 1. JAXP 1.1 SAX 2 1.2 DOM 2 1.3 XSLT 1.4 StAX 2. JAXB 2.1 XML-to-Java 2.2 Java-to-XML 2.3 SAAJ Tema 3. XML Processing APIs 12/02/2013 2
  • 3. 3.1. JAXP Introducción • Java API for XML Processing (JAXP) se utiliza para el procesamiento de datos XML. • Utiliza • SAX (Simple API for) • DOM (Document Object Model • Compatilbe con el estándar eXtensible Stylesheet Language Transformations (XSLT) • proporciona soporte para namespaces -> DTDs • A partir de la versión 1.4, implementa el estándar Streaming API for XML (StAX). Tema 3. XML Processing APIs 12/02/2013 3
  • 4. 3.1.1 SAX Introducción • Arquitectura basada en eventos. • Un analizador SAX lee un XML como un flujo de datos. • Según va leyendo envía eventos a un objeto de una clase que implemente la interfaz SAX. • Utiliza varias interfaces, como ContentHandler Tema 3. XML Processing APIs 12/02/2013 4
  • 5. 3.1.1 SAX Eventos I • startDocument() • Evento producido al empezar el documento. • endDocument() • Evento producido al finalizar el documento. • startPrefixMapping(String prefix, String uri) • Empieza la lectura de un prefijo. • endPrefixMapping(String prefix) • Finaliza la lectura de un prefijo. • startElement(String uri, String localName, String qName, Attributes atts) • Empieza la lectura de un elemento. Los parámetros que recibe son: • uri: URI del espacio de nombres al que pertenece el elemento. • localName: nombre del elemento sin el prefijo. • qName : nombre completo del elemento, es decir, el prefijo más el localName. • atts: conjunto de atributos del elemento. Tema 3. XML Processing APIs 12/02/2013 5
  • 6. 3.1.1 SAX Eventos y II • endElement(String uri, String localName, String qName) • Finaliza la lectura de un elemento • characters(char[] ch, int start, int length) • Lectura del contenido de un elemento. Recibe un array de chars con una posición inicial y la longitud. • ignorableWhitespace(char[] ch, int start, int length) • Evento lanzado cuando se leen un character en blanco que se puede ignorar • processingInstruction(String target, String data) • Evento lanzado al procesar una instrucción • skippedEntity(String name) Tema 3. XML Processing APIs 12/02/2013 • Tiene lugar en algunos analizadores que se saltan las entidades cuando no están validando, pero es difícil encontrar casos así. 6
  • 7. 3.1.1 SAX Como parsear un XML con SAX. XMLReader reader = XMLReaderFactory.createXMLReader(); ContentHandler handler = new MiHandler(); reader.setContentHandler(handler); reader.parse(ARCHIVO_XML); Tema 3. XML Processing APIs 12/02/2013 7
  • 8. 3.1.2 DOM Introducción • Conjunto de clases e interfaces que modela XML como un árbol de objetos(nodos). • Cuando DOM analiza un documento XML, lee el contenido y construye un grafo de objetos que refleja la estructura del XML. Tema 3. XML Processing APIs 12/02/2013 8
  • 9. 3.1.2 DOM Elementos • Cada elemento en el documento XML se representa mediante una instancia de tipo Element. • Cada uno de los componentes XML tiene su correspondiente tipo DOM. Su supertipo común es la interfaz org.w3c.dom.Node. • atributos - Attr • comentarios – Comment • texto - Text, secciones CDATA a CDATASection, y así sucesivament • Cuando un parseador DOM procesa un documento XML con éxito, devuelve un objeto org.w3c.dom.Document. • Document proporciona acceso al elemento raíz, que a su vez da acceso a todos los elementos Tema 3. XML Processing APIs 12/02/2013 9
  • 10. • Utiliza DocumentBuilderFactory y DocumentBuilder. • Estas clases proporcionan abstracciones para los parseadores DOM y cómo proporcionarles documentos XML. • DocumentBuilderFactory es una factoría utilizada para crear parseadores DOM. • devuelve una instancia de DocumentBuilder, que representa el parseador, mediante su método el DocumentBuilderFactory.newInstance(). • En el caso de querer crear un documento utilizamos DOMImplementation,. • Se obtiene con DocumentBuilder • Prepara el nuevo Document con el nombre cualificado y el espacio de nombres XML del Element raíz. Tema 3. XML Processing APIs 12/02/2013 10 3.1.2 DOM Como parsear un XML (I)
  • 11. 3.1.2 DOM Como parsear un XML (II) DocumentBuilder builder factory.newDocumentBuilder = (); DOMImplementation domImpl builder.getDOMImplementation = (); Documento xmlDoc domImpl.createDocument = (SOAP_NS, "soap: Envelope", null); Element root = xmlDoc.getDocumentElement(); • Una vez obtenido root podemos empezar a añadirle otros elementos. Tema 3. XML Processing APIs 12/02/2013 11
  • 12. • Tipo de dato primario de DOM. • Representa un nodo en el árbol del documento • Posee estas constantes que indican el tipo de nodo: • public static final short ATTRIBUTE_NODE; • public static final short CDATA_SECTION_NODE; • public static final short COMMENT_NODE; • public static final short DOCUMENT_FRAGMENT_NODE; • public static final short DOCUMENT_NODE; • public static final short DOCUMENT_TYPE_NODE; • public static final short ELEMENT_NODE; • public static final short ENTITY_NODE; • public static final short ENTITY_REFERENCE_NODE; • public static final short NOTATION_NODE; • public static final short PROCESSING_INSTRUCTION_NODE; Tema 3. XML Processing APIs 12/02/2013 12 3.1.2 DOM La interfaz Node
  • 13. 3.1.2 DOM La interfaz Node. Métodos. (I) • Métodos que dependen del tipo de nodo • getNodeType (): Nos indica el tipo de nodo. • Node.getNodeName() y Node.getNodeValue(): Nos devuelven diferentes valores en función de la siguiente tabla. Tema 3. XML Processing APIs 12/02/2013 13 Interface nodeName nodeValue Attr name of attribute value of attribute CDATASection "#cdata-section" content of the CDATA Section Comment "#comment" content of the comment Document "#document" null DocumentFragment "#document-fragment" null DocumentType document type name null Element tag name null Entity entity name null EntityReference name of entity referenced null Notation notation name null ProcessingInstructio n target entire content excluding the target Text "#text" content of the text node
  • 14. • Metodos de nombres XML • Sólo se asignan nombres XML a los tipos Element y Attr. • getLocalName() • getNamespaceURI • getPrefix() • setPrefix() • Métodos para los atributos • hasAttributes(): devuelve true si el nodo tiene atributos. solo los nodos Element devolverán true; el resto false. • getAttributes(): devuelve un mapa de los atributos de un elemento específico, junto con sus valores Tema 3. XML Processing APIs 12/02/2013 14 3.1.2 DOM La interfaz Node. Métodos. (II)
  • 15. • Metodos para navegar • getParent(): devueleve el padre de un elemento. Puede ser otro elemento o, en el caso del elemento raíz, un documento. • getPreviousSibling() o getNextSibling(): devuelve el hermano anterior o siguiente. (Nodos que comparten padre) • getChildNodes(): devuelve la lista de nodos hijos en un NodeList. • getLastChild(): devuelve el ultimo hijo • getFirstChild().: devuelve el primer hijo. Tema 3. XML Processing APIs 12/02/2013 15 3.1.2 DOM La interfaz Node. Métodos. (III)
  • 16. • Metidos de gestión de hijos. • appendChild() agrega un nodo al final de la lista de hijos de un Node. • insertBefore(): inserta un nuevo nodo en la lista de hijos justo antes del hermano designado. • removeChild() elimina el nodo del árbol • replaceNodes() reemplaza un nodo a otro. • no se puede asignar a un objeto de otro documento. • No son visibles en el árbol, pero son todavía propiedad del mismo documento. Tema 3. XML Processing APIs 12/02/2013 16 3.1.2 DOM La interfaz Node. Métodos. (IV)
  • 17. • API de parseo por “pull” del flujo XML, orientada a eventos, capaz de leer y escribir XML. • “pull” significa que es la clase manejador (handle) llama al parseador, y no al revés. En otras palabras, el manejador de "tira" de los eventos XML del analizador. • Se puede detener el análisis en cualquier momento. • StAX es más simple que SAX y también tiene una gestión de memoria más eficiente que DOM. • Stax se combina de dos APIs diferentes: API cursor y API iterator. Tema 3. XML Processing APIs 12/02/2013 17 3.1.3 StAX Introducción.
  • 18. • Representa un cursor con el que se puede recorrer un documento XML. • Siempre se mueve hacia adelante, nunca hacia atrás. • Utiliza XMLStreamReader y XMLStreamWriter. • XMLStreamReader incluye métodos para acceder a toda la información posible del XML public interface XMLStreamReader { public int next() throws XMLStreamException; public boolean hasNext() throws XMLStreamException; public String getText(); public String getLocalName(); public String getNamespaceURI(); // ... other methods not shown } • XMLStreamWriter public interface XMLStreamWriter { public void writeStartElement(String localName) throws XMLStreamException; public void writeEndElement() throws XMLStreamException; public void writeCharacters(String text) throws XMLStreamException; // ... other methods not shown } • La API cursor tiene cierto parecido con SAX. • dispone de métodos para acceder directamente al flujo de caracteres. • Los métodos de la API devolven información XML como string, lo que minimiza los requisitos de memoria. Tema 3. XML Processing APIs 12/02/2013 18 CURSOR API 3.1.3 StAX API Cursor
  • 19. • Representa un flujo de un documento XML como un conjunto discreto de eventos. • Estos eventos son lanzados por el parseador en el orden en que se leen del XML. • El evento base se denomina XMLEvent, existiendo subinterfaces para cada tipo de evento. • XMLEventReader: XMLEventReader contiene cinco métodos, el más importante es nextEvent(). implementa java.util.Iterator • XMLEventWriter. Implementa java.util.Iterator. Tema 3. XML Processing APIs 12/02/2013 19 3.1.3 StAX API Iterator
  • 20. • Cosas que se pueden hacer con iterator y no con cursor: • Los objetos creados a partir de las subclases XMLEvent son inmutables, y pueden ser utilizados en arrays, listas y mapas, y puede transmitirse a través de la aplicación, incluso después de que el parser haya azanzado a eventos posteriores. • Se puede crear subtipos de XMLEvent que, o sean completamente nuevos, o ampliaciones de elementos existentes, pero con métodos adicionales. • Se puede agregar y quitar eventos de una secuencia de eventos XML de una manera mucho más simple que con la API cursor. • Recomendaciones generales • Si el rendimiento es una prioridad importante, la API cursor es más eficiente. • Si desea crear flujos de procesamiento de XML, utilice la API iterator. • Si desea modificar la secuencia de eventos, utilice la API iterator. • En general se recomienda utilizar la API de iterator porque es más flexible y extensible. Tema 3. XML Processing APIs 12/02/2013 20 3.1.3 StAX Comparativa
  • 21. • Define • una gramática: hojas estilo XSLT • reglas de procesado para el mapeo de documentos en un formato a documentos en otro formato. • Lo importante de XSLT es quedarnos con que permite la escritura de datos XML en un archivo, convertir datos XML a otros formatos y, junto con SAX, la conversión de los datos heredados a XML. Tema 3. XML Processing APIs 12/02/2013 21 3.1.4 XSLT Introducción
  • 22. Comparativa Feature StAX SAX DOM API Type Pull, streaming Push, streaming In memory tree Ease of Use High Medium High XPath Capability No No Yes CPU and Memory Efficiency Good Good Varies Forward Only Yes Yes No Read XML Yes Yes Yes Write XML Yes No Yes Create, Read, Update, Delete No No Yes Tema 3. XML Processing APIs 12/02/2013 22
  • 23. • Mapear XML a objetos y cargarlos en memoria • Este mapeo se realiza de acuerdo a un esquema. • Generar clases que representan elementos de un XML • Desarrolladores no tienen que escribir los objetos • Básicamente nos permite realizar las operaciones que se muestran a continuación: • Con JAXB ya no tenemos que aprender lo que nos ha explicado Chema de SAX y DOM. Lo siento Chema!! Tema 3. XML Processing APIs 12/02/2013 23 3.1.4 JAXB ¿XML BINDING?
  • 24. • Crear/Leer/Modificar XML • Validar entradas de usuario basado en las restricciones impuestas en un XML schema. Tema 3. XML Processing APIs 12/02/2013 24 3.1.4 JAXB CASOS DE USO
  • 25. • Dado un Schema “hello.xsd” • Ejecutamos comando xjc –p hello hello.xsd -p para indicar el directorio de destino hello Tema 3. XML Processing APIs 12/02/2013 25 3.1.4 JAXB HELLO WORLD
  • 26. • Clases generadas Tema 3. XML Processing APIs 12/02/2013 26 3.1.4 JAXB HELLO WORLD
  • 27. • Usar las clases y obtener resultado Tema 3. XML Processing APIs 12/02/2013 27 3.1.4 JAXB HELLO WORLD
  • 28. • Con las anotaciones defines el XML Schema Tema 3. XML Processing APIs 12/02/2013 28 3.1.4 JAXB EJEMPLO CON ANOTACIONES
  • 29. • Objeto a XML Tema 3. XML Processing APIs 12/02/2013 29 3.1.4 JAXB EJEMPLO CON ANOTACIONES
  • 30. • XML a Objeto Tema 3. XML Processing APIs 12/02/2013 30 3.1.4 JAXB EJEMPLO CON ANOTACIONES
  • 31. Tema 3. XML Processing APIs 12/02/2013 31 3.1.4 JAXB EJEMPLO CON ANOTACIONES
  • 32. Tema 3. XML Processing APIs 12/02/2013 32 3.1.4 JAXB SAAJ • API que permite la construcción y lectura de mensajes SOAP • Es una API de más bajo nivel que JAX-RPC y JAX-WS • Permite el envío de adjuntos en el mensaje SOAP. Una imagen jpg por ejemplo.
  • 33. Tema 3. XML Processing APIs 12/02/2013 33 3.1.4 JAXB SAAJ -Mensaje SOAP sin adjuntos
  • 34. Tema 3. XML Processing APIs 12/02/2013 34 3.1.4 JAXB SAAJ -Mensaje SOAP con adjuntos
  • 35. Tema 3. XML Processing APIs 12/02/2013 35 3.1.4 JAXB SAAJ - CREANDO UN MENSAJE SOAP • CLASE: javax.xml.soap.MessageFactory • Resultado: • Acceder a los elementos del mensaje • A través del objeto SOAPEnvelope(javax.xml.soap) • A través del objeto SOAPMessage
  • 36. Tema 3. XML Processing APIs 12/02/2013 36 3.1.4 JAXB SAAJ - CREANDO UN MENSAJE SOAP • CLASE: javax.xml.soap.MessageFactory • Resultado: • Acceder a los elementos del mensaje • A través del objeto SOAPEnvelope(javax.xml.soap) • A través del objeto SOAPMessage
  • 37. Tema 3. XML Processing APIs 12/02/2013 37 3.1.4 JAXB SAAJ - CREANDO UN MENSAJE SOAP • Añadir elemento al Body del mensaje • Resultado:
  • 38. Tema 3. XML Processing APIs 12/02/2013 38 3.1.4 JAXB SAAJ - CREANDO UNA CONEXIÓN PARA EL MENSAJE SOAP connection.close(); • Recuperar el mensaje while (iterator.hasNext()) { SOAPBodyElement bodyElement =(SOAPBodyElement)iterator.next(); String lastPrice = bodyElement.getValue(); System.out.print("The last price for SUNW is "); System.out.println(lastPrice); }
  • 39. Tema 3. XML Processing APIs 12/02/2013 39 3.1.4 JAXB SAAJ - CREANDO UN MENSAJE SOAP • Añadir elemento al Body del mensaje • Resultado:
  • 40. Tema 3. XML Processing APIs 12/02/2013 40 3.1.4 JAXB SAAJ - AÑADIENDO ADJUNTOS AL MENSAJE SOAP • Se puede añadir cualquier contenido • Añadiendo una imagen:
  • 41. Tema 3. XML Processing APIs 12/02/2013 41 3.1.4 JAXB Referencias • Referencias: • JAXB • http://docs.oracle.com/javase/tutorial/jaxb/intro/index.html • http://jaxb.java.net/tutorial/ • http://javapapers.com/jee/jaxb-tutorial • SAAJ • http://docs.oracle.com/cd/E19575-01/819-3669/bnbhr/index.html • http://oreilly.com/catalog/javawsian/chapter/ch03.pdf
  • 42. Preguntas Tema 3. Stateful Session Beans 13/03/12 42 XSLT
  • 43. Preguntas Tema 3. Stateful Session Beans 13/03/12 43 DOM
  • 44. Preguntas Tema 3. Stateful Session Beans 13/03/12 44 SAX
  • 45. Preguntas Tema 3. Stateful Session Beans 13/03/12 45 TRUE
  • 46. Preguntas Tema 3. Stateful Session Beans 13/03/12 Short Int 46
  • 47. Preguntas Tema 3. Stateful Session Beans 13/03/12 XMLGregorianCalendar XMLGregorianCalendar Object 47
  • 48. Preguntas Tema 3. Stateful Session Beans 13/03/12 48 JAXB
  • 49. Preguntas Tema 3. Stateful Session Beans 13/03/12 49 TRUE
  • 50. Preguntas Tema 3. Stateful Session Beans 13/03/12 50 TRUE
  • 51. Preguntas Tema 3. Stateful Session Beans 13/03/12 51 TRUE
  • 52. Preguntas Tema 3. Stateful Session Beans 13/03/12 52 TRUE
  • 53. Tema 3. Stateful Session Beans 13/03/12 53