Post on 30-Oct-2014
description
transcript
1
“JDOM" 1-2
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
Zottola Pareja Darwin Rodrigo
rodrigozeta@gmail.com
Ingeniería en Computación
Universidad Nacional de Tucuman - UNT
2
CONTENIDO
INTRODUCCIÓN
INTRODUCCION - XML
JDOM
EJEMPLO
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
3
INTRODUCCION - XML
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
4
QUE ES XML?
XML (Extensible Markup Language) es un lenguaje de etiquetas, es decir, cada paquete de información está delimitado por dos etiquetas
XML separa el contenido de la presentación(dato+información)
XML no es sólo un lenguaje, es una forma de especificar lenguajes, de ahí lo de extensible
HTML
<H1>Mateo</H1>
XML
<Nombre>Mateo</Nombre>
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
5
QUE ES XML?
Cualquiera puede desarrollar su propio lenguaje de etiquetas adecuado al tipo de aplicación que más le convenga.
Hay muchas tecnologías basadas en XML (XPath, XLink, XPointer, XSL, ...).
No pertenece a ninguna compañía
XML es texto para estructurar datos(persistencia)
<Datos-Nacimiento> <Persona>
<Nombre>Mateo</Nombre>
<Fecha>15.10.2009</Fecha> <Ciudad>Madrid</Ciudad> <Peso>3.1Kg</Peso>
<Estatura>45cm</Estatura> </Persona> </Datos-Nacimiento>
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
6
XML – POR QUE USARLO?
Xml es texto para estructurar datos(persistencia) Estándar para el intercambio de datos entre aplicaciones en Internet independiente del formato de almacenamiento de los mismosHoy en dia muchas aplicaciones requieren el almacenamiento de datos XML
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
7
XML- Componentes
Los documentos XML constan de:
Instrucciones de procesamiento (processing instructions – PI)
Elementos Comentarios Referencias a
entidades Secciones CDATA
SEC. CDATA <![CDATA[<saludo>Hola, mundo!</saludo>]]>
ELEMENT Y ATRIBUTOS <saludo tipo=“coloquial”>Hola</saludo>
INSTRUCIONES PROC <?xml version="1.0"?>
<saludo>Hola, mundo!</saludo>
COMENTARIOS <!-- Esto es un comentario -->
REF. A ENTIDADES <!ENTITY Empresa “Universidad de Deusto”> <pie>Creado por &Empresa;</pie>
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
8
XML- GRAMATICA
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
DTD (Document Type Definitions)*Define de la construcción del xml.
*Permiten definir qué significa exactamente cada una de las marcas.*Permitre diseñar modelos jerarquicos
*Describe el contenido en forma precisa y evita repeticiones.
XML Schemas *Schema vence las limitaciones de los
DTDs*Schema, permite definir estructuras
mas complejas que en los DTDs*Se puede definir tipos de datos específicos, por ejemplo no sólo NMTOKEN , #PCDATA o CDATA.
*XML Schema, se puede manipular de manera sencilla via VBScript o en
Páginas ASP o JSP.*Puede establecer elementos con
relacionesZottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
9
XML Schemas - XSD
Algunas ventajas: Mayor precisión en la definición de tipos de
datos mediante formatos y facetas Por ejemplo, la fecha:
<date type="date">1999-03-11</date> ¿es el 11 de marzo o el 3 de noviembre?
Los esquemas se definen como documentos XML, en un documento aparte con extensión .XSD
En los documentos XML que se basen en ese esquema, incluiremos una referencia al archivo .XSDZottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
10
XML- 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)
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
Una etiqueta de apertura siempre tiene su contraparte de cierre con “/
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
11
XML - APIs para Procesar XML
Java API for XML Processing (JAXP) Java API for XML/Java Binding (JAXB) Long Term JavaBeans Persistence Java API for XML Messaging (JAXM) Java API for XML RPC (JAX RPC) Java API for XML Registry (JAXR)
API SOBRE JAXP SAX, Simple API for XML DOM, Document Object
Model API from W3C XSLT, XML Style Sheet
Language Transformations from W3C
XPath, XML Path Language from W3C
JDOM, "Java optimized" document object model API from jdom.org
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
12
XML - APIs para Procesar XML
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
13
XML - APIs para Procesar XML Usar JAXB cuando desee:
Acceder a los datos en la memoria, pero no necesitan las capacidades de manipulación de árboles
Procesar sólo los datos que son válidos
Convertir los datos en diferentes tipos
Generar clases basadas en un DTD
Construir representaciones de objetos de datos XML.
Utilice JAXP cuando desee:
Tener flexibilidad en cuanto a la forma de acceder a los datos: ya sea en serie con la memoria SAX o DOM en forma aleatoria conç
Utilice el mismo código de procesamiento de documentos basada en DTD diferentes
Analizar los documentos que no son necesariamente válidas
Aplicar transformaciones XSLT Insertar o eliminar objetos de
un árbol de objetos que representa los datos XML
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
14
XML - APIs para Procesar XML
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
15
XML Validado
PARSERXML
XML
DTD/XSD
XML- PARSING
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
16
JDOM
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
17
QUE ES JDOM ? JAVA + XML = JDOM Es una librería de codigo abierto creada para la manipulacion de archivos XML y optimizada para java.(posee licencia Apache(2000) )Modelo de programación para representar datos en xml Modelo similar a DOM pero no esta hecho o modelado en base al mismo. “Lo mejor de Ambos mundos”-
API sencillo de usar Modelo de acceso aleatorio como DOM Aprovecha las ventajas de Sax Utiliza Clases y no interfaces
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
18
JDOM - FILOSOFIA
Poder ser directamente reconocido y asimilado por cualquier programador JAVA
Utilizar las ventajas del poder del lenguaje java (method overloading, collections, reflection)
Ocultar lo complejo del lenjuage XML lo mayor posible
Integrarse de manera eficiente con SAX y DOM
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
19
JDOM - Package Structure
org.jdom
org.jdom.input
org.jdom.output
org.jdom.adapters
org.jdom.transform
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
20
JDOM - CLASES
org.jdom Package Attribute CDATA Comment DocType Document Element EntityRef Namespace ProcessingInstruction Text
org.jdom.transform PackageJDOMSource JDOMResult
The org.jdom.input Package SAXBuilderDOMBuilder ResultSetBuilder
The org.jdom.output PackageXMLOutputter SAXOutputter DOMOutputterJTreeOutputter
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
21
JDOM – CLASE Document
Documentos son representados por
org.jdom.Document
Pueden ser creados desde cero :
new Document(new Element("root"));
O ser creados desde un archivo, stream, system ID, URL:
Document doc = SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(url);
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
22Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
23
JDOM - LA CLASE Element
Para navegar por el arbol de elementos :
// Obtener la raiz del Arbol
Element root = doc.getRootElement();
// Obtener una lista de los hijos
List allChildren = root.getChildren();
// Obtener elementos con un nombre dado
List namedChildren = root.getChildren("name");
// Obtener el Primer Elemento con un nombre dado
Element child = root.getChild("name");
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
24
JDOM 2 - Sax Parsing Mejorado
SaXBuilder : GetFactory () ha sido sustituido por set /
getJDOMFactory () Los métodos booleanos como getExpandEntities ()
han sido reemplazados con es () métodos como isExpandEntities ()
Para los métodos obsoletos booleanas / constructores, XMLReaderJDOMFactory usa XMLReaders.DTDVALIDATION o XMLReaders.NOVALIDATION
Para los constructores de String en desuso, usa XMLReaderSAX2Factory
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
25
JDOM – BUENA FORMACION
El constructor de Elementos se asegura de chequear si el mismo es ilegal . Por EJ cuando se utiliza un carácter prohibido.Al agregar y borrar los elementos chequea la estructura del Arbol:
No de haber lazos Solamente un root Consistencia en los
espacios de nombres
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
26
JDOM - ATRIBUTOS Todo elemento puede tener atributos:
<table width="100%" border="0"> </table>
// Obtener un atributo
String width = table.getAttributeValue("width");
int border = table.getAttribute("width")
.getIntValue();
// agregar un Atributo
table.setAttribute("vspace", "0");
// Borrar un atributo o todos ellos
table.removeAttribute("vspace");
table.getAttributes().clear();
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
27
JDOM 2 - AttributeType
En la enumeración JDOM2 AttributeType nueva contiene todos los tipos de atributos mismas 1.x JDOM, pero son valores enumerados, no ints. Además, la clase atributo tiene constantes referencias que los miembros de la enumeración AttributeType.
// JDOM2 example same as JDOM 1.x
Attribute idatt = new Attribute("id", "value", Attribute.ID_TYPE); // Identical JDOM2 example using direct AttributeType Enum instead of
reference to enum member
Attribute idatt = new Attribute("id", "value", AttributeType.ID);
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
28
JDOM - LA CLASE Element
Para navegar por el arbol de elementos :
// Obtener la raiz del Arbol
Element root = doc.getRootElement();
// Obtener una lista de los hijos
List allChildren = root.getChildren();
// Obtener elementos con un nombre dado
List namedChildren = root.getChildren("name");
// Obtener el Primer Elemento con un nombre dado
Element child = root.getChild("name");
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
29
JDOM - Colecciones y excepciones
El contenido y el código de la clase 'List' en JDOM2 ha sido revisado para lanzar el mismo tipo de excepciones como las clases "básicas" java.util.List. Esto hace JDOM2 más predecible para personas familiarizadas con las implementaciones "estándar" java.util.List.
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
30
JDOM - CONTENIDO DE UN ELEMENTO Un Elemento puede tener un contenido:
<description> hola mundo </description>
// Lo siguiente devolveria "\n hola mundo \n"
String desc = element.getText();
// hola mundo sin espacios
String desc = element.getTextTrim();
// Se puede modificar y agragar un nuevo contenido y los caracteres especiales son reconocidos
element.setText("A new description");
element.setText("<xml> content");
De la misma manera puede ser modificados los Comment, Text, CDATA, ProcessingInstruction ,y EntityRef
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
31
JDOM - MOVIENDO ELEMENTOS
//Moving Element movable = new Element("movable");
parent1.addContent(movable); // place
parent1.removeContent(movable); // remove
parent2.addContent(movable); // add
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
32
JDOM - LA CLASE XMLOutputter
Esta permite que los tipos de salida sean flexible:
Document doc = new Document(...);
XMLOutputter outp = new XMLOutputter();
// Salida normal(en crudo)
outp.output(doc, fileOutputStream);
// Salida compacta
outp.setTextTrim(true);
outp.output(doc, socket.getOutputStream());
// Pretty output
outp.setIndent(" ");
outp.setNewlines(true);
outp.output(doc, System.out);
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
33
JDOM 2 – XMLOutputter RediseñadoGestión de espacios de nombres -
NamespaceStackGestión de configuración de formato
(sangría, etc) - Formato y FormatStack .Aplicar formato a la salida - Walker .Escapar de la salida apropiadamente -
EscapeStrategyGestión del proceso de producción, y la
entrega de la salida al destino - OutputProcessor *
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
34
JDOM - NAMESPACE• JDOM soporta namespace en forma nativa.
<xhtml:html
xmlns:xhtml="http://www.w3.org/1999/xhtml
<xhtml:title>Home Page</xhtml:title>
</xhtml:html>
Namespace xhtml = Namespace.getNamespace(
"xhtml", "http://www.w3.org/1999/xhtml");
List kids = html.getChildren("title", xhtml);
Element kid = html.getChild("title", xhtml);
kid.addContent(new Element("table", xhtml));
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
35
JDOM - Proceso de Intrucciones
<?br?><?cocoon-process type="xslt"?>// Get "target", such as cocoon-processString target = pi.getTarget();// Get "data", such as ' type="xslt"'String data = pi.getData();// The data is available as attributes!String type = pi.getValue("type");Target Data
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
36
CONCLUSIONES
JDOM es una Liberia de codigo abierto optimizada para java y la manipulacion y de documentos XML.Fue creada para se facil de aprender, para ser bastante potente como herramienta , y de comportamiento natural para los programadores en javaUsa JAXP e integrada tanto DOM Como SAXPuede utilizar cualquier tipo de parser ocultando la complejidad de su funcionamiento y aprovechando sus cualidades (ej XML Schema)Es JSR oficialProdude de una manera sencilla documentos XML. Pertenece a una familia de tecnologias donde se encuentran diferentes herramientas para poder manipular y estructurar datos.(EJ:Xquery)
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina
37
EJEMPLO
Zottola Pareja Darwin Rodrigo –Ing. en Computación - UNT 2012 Argentina