You are on page 1of 37

Zottola Pareja Darwin Rodrigo rodrigozeta@gmail.

com Ingeniera en Computacin Universidad Nacional de Tucuman - UNT


Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

CONTENIDO
INTRODUCCIN

INTRODUCCION - XML

JDOM

EJEMPLO

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

QUE ES XML?
XML (Extensible Markup Language)

es un lenguaje de etiquetas, es decir, cada paquete de informacin est delimitado por dos etiquetas
XML separa el contenido de la

HTML <H1>Mateo</H1>

presentacin(dato+informacin)
XML no es slo un lenguaje, es una

forma de especificar lenguajes, de ah lo de extensible

XML <Nombre>Mateo</Nombre>

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

QUE ES XML?
Cualquiera puede desarrollar su

propio lenguaje de etiquetas adecuado al tipo de aplicacin que ms le convenga. Hay muchas tecnologas basadas en XML (XPath, XLink, XPointer, XSL, ...).
No pertenece a ninguna compaa 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 Computacin - UNT 2012 Argentina

XML POR QUE USARLO?


Xml es texto para estructurar

datos(persistencia) Estndar para el intercambio de datos entre aplicaciones en Internet independiente del formato de almacenamiento de los mismos Hoy en dia muchas aplicaciones requieren el almacenamiento de datos XML

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

XML- Componentes
Los documentos XML constan de:

Instrucciones de

SEC. CDATA <![CDATA[<saludo>Hola, mundo!</saludo>]]>

procesamiento (processing
instructions PI)

Elementos

ELEMENT Y ATRIBUTOS <saludo tipo=coloquial>Hola</saludo>

Comentarios
Referencias a entidades Secciones CDATA

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 Computacin - UNT 2012 Argentina

XML- GRAMATICA
DTD (Document Type Definitions)

La gramtica que restringe los elementos vlidos dentro de un nuevo derivado de XML puede expresarse en forma de:

*Define de la construccin del xml. *Permiten definir qu significa exactamente cada una de las marcas. *Permitre disear modelos jerarquicos *Describe el contenido en forma precisa y evita repeticiones.

DTD (Document Type

Definitions) o Esquemas XML

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 especficos, por
ejemplo no slo NMTOKEN , #PCDATA o CDATA.

*XML Schema, se puede manipular de manera sencilla via VBScript o en Pginas ASP o JSP.

*Puede establecer elementos con relaciones


Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

XML Schemas - XSD


Algunas ventajas:
Mayor precisin en la definicin 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 extensin .XSD En los documentos XML que se basen en ese esquema, incluiremos una referencia al archivo .XSD
Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

XML- XML bien formado y/o XML vlido


Hay dos tipos de documentos XML:

Bien formados: son

Para que un documento est bien formado:

aquellos que cumplen las reglas sintcticas de XML Vlidos: son aquellos que, adems de ser bien formados, siguen las reglas de una gramtica (definida en un DTD o XML Schema)

Debe tener un prlogo

Debe tener una etiqueta raz Las etiquetas se hallan correctamente anidadas Se usan caracteres vlidos 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 Computacin - UNT 2012 Argentina

10

XML - APIs para Procesar XML


Java API for XML Processing

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

(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)

object model API from jdom.org

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

11

XML - APIs para Procesar XML

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

12

XML - APIs para Procesar XML


Usar JAXB cuando desee:
Acceder a los datos en la
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

memoria, pero no necesitan las capacidades de manipulacin de rboles Procesar slo los datos que son vlidos Convertir los datos en diferentes tipos Generar clases basadas en un DTD Construir representaciones de objetos de datos XML.

en forma aleatoria con


Utilice el mismo cdigo de procesamiento de documentos basada en DTD diferentes Analizar los documentos que no son necesariamente vlidas Aplicar transformaciones XSLT Insertar o eliminar objetos de un rbol de objetos que representa los

datos XML

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

13

XML - APIs para Procesar XML

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

14

XML- PARSING

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

15

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

16

QUE ES JDOM ?
JAVA + XML = JDOM Es una librera de codigo abierto creada para la

manipulacion de archivos XML y optimizada para java.(posee licencia Apache(2000) ) Modelo de programacin 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 Computacin - UNT 2012 Argentina

17

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 Computacin - UNT 2012 Argentina

18

JDOM - Package Structure


org.jdom
org.jdom.input

org.jdom.output
org.jdom.adapters org.jdom.transform
Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

19

JDOM - CLASES
org.jdom Package
Attribute
CDATA Comment DocType

org.jdom.transform Package
JDOMSource JDOMResult

The org.jdom.input Package


SAXBuilder DOMBuilder ResultSetBuilder

Document
Element EntityRef Namespace

ProcessingInstruction
Text

The org.jdom.output Package


XMLOutputter SAXOutputter DOMOutputter JTreeOutputter
20

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

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 Computacin - UNT 2012 Argentina

21

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

22

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 Computacin - UNT 2012 Argentina

23

JDOM 2 - Sax Parsing Mejorado


SaXBuilder :
GetFactory () ha sido sustituido por set / getJDOMFactory () Los mtodos booleanos como getExpandEntities () han sido

reemplazados con es () mtodos como isExpandEntities () Para los mtodos 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 Computacin - UNT 2012 Argentina

24

JDOM BUENA FORMACION


El constructor de Elementos se

asegura de chequear si el mismo es ilegal . Por EJ cuando se utiliza un carcter 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 Computacin - UNT 2012 Argentina

25

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 Computacin - UNT 2012 Argentina

26

JDOM 2 - AttributeType
En la enumeracin JDOM2 AttributeType nueva contiene todos

los tipos de atributos mismas 1.x JDOM, pero son valores enumerados, no ints. Adems, la clase atributo tiene constantes referencias que los miembros de la enumeracin 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 Computacin - UNT 2012 Argentina

27

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 Computacin - UNT 2012 Argentina

28

JDOM - Colecciones y excepciones


El contenido y el cdigo de la clase 'List' en JDOM2 ha sido revisado para lanzar el mismo tipo de excepciones como las clases "bsicas" java.util.List. Esto hace JDOM2 ms predecible para personas familiarizadas con las implementaciones "estndar" java.util.List.

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

29

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 Computacin - UNT 2012 Argentina

30

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 Computacin - UNT 2012 Argentina

31

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);
32

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

JDOM 2 XMLOutputter Rediseado


Gestin de espacios de nombres - NamespaceStack Gestin de configuracin de formato (sangra, etc) -

Formato y FormatStack . Aplicar formato a la salida - Walker . Escapar de la salida apropiadamente - EscapeStrategy Gestin del proceso de produccin, y la entrega de la salida al destino - OutputProcessor *

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

33

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 Computacin - UNT 2012 Argentina

34

JDOM - Proceso de Intrucciones


<?br?> <?cocoon-process type="xslt"?> // Get "target", such as cocoon-process String 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 Computacin - UNT 2012 Argentina

35

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 java


Usa JAXP e integrada tanto DOM Como SAX
Puede utilizar cualquier tipo de parser ocultando la complejidad de su

funcionamiento y aprovechando sus cualidades (ej XML Schema)


Es JSR oficial

Produde 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 Computacin - UNT 2012 Argentina

36

Zottola Pareja Darwin Rodrigo Ing. en Computacin - UNT 2012 Argentina

37

You might also like