PDF de programación - XML, Servicios Web y Web Semántica

Imágen de pdf XML, Servicios Web y Web Semántica

XML, Servicios Web y Web Semánticagráfica de visualizaciones

Publicado el 29 de Mayo del 2018
207 visualizaciones desde el 29 de Mayo del 2018
3,3 MB
35 paginas
Creado hace 16a (29/03/2004)
XML, Servicios Web y

Web Semántica

Departamento de Informática

Universidad de Oviedo

Sesión 7

Programación XML

SAX, DOM, Enlaces

Departamento de Informática

Universidad de Oviedo

NOTA: Gran parte de estas trasparencias han sido realizadas por César F. Acebal

1

Programación XML

Los programas que manipulan XML realizan funciones similares:

Análisis del documento XML

Sintáctico y Semántico

Navegación por el documento
Transformación del documento
Generación de nuevos documentos XML

Como XML deriva de SGML desde el principio se dispuso de

herramientas
Toda la tecnología SGML es válida aquí
Ahora ya hay herramientas específicas para XML

Programación XML

Principales métodos:

Guiada por eventos: SAX
Basada en el recorrido del árbol: DOM
Enlaces (Bindings): JAXB

2

Programación XML
SAX: Modelos de eventos

SAX (Simple API for XML) es un analizador basado en eventos

Se define un modelo de eventos que se generan al analizar el documento XML

Esquema del
documento

Validación

Analizador
Sintáctico

Evento del analizador

Solicitud de datos

Lógica de
la aplicación

Documento

XML

Ejemplos de eventos generados

start document
start element: pizzas
start element: pizza
start element: ingrediente
end element: ingrediente
. . .
. . .

Procesamiento de XML
DOM: Modelos Basados en Árbol

DOM (Document Object Model)

Se genera un árbol a partir del documento XML
DOM = Interfaz que define cómo recorrer/modificar dicho árbol

Esquema del
documento

Árbol del
documento

Validación

Analizador
Sintáctico

Lógica de
la aplicación

Documento

XML

Problemas: Ficheros grandes
Solución: Deferred document (evaluación perezosa)

3

Procesamiento de XML
JAXB: Enlaces

JAXB: Java API for XML Binding

A partir del esquema del documento se generan clases de enlace
Permite trabajar con objetos de la aplicación
Generación automática de documentos válidos

Esquema del
documento

clases
enlace

Lógica de
la aplicación

Documento

XML

Modelo basado en eventos:
SAX

4

SAX

Creada por desarrolladores XML a partir de los comentarios en la lista

SAX: API simple para XML

xml-dev en 1998

Funcionamiento:

Durante el reconocimiento del documento...
...cada vez que se identifica una estructura (elemento) se mira si hay un

procedimiento que manipula ese elemento
- se llama al procedimiento
- cuando termina, continua con el reconocimiento

Los procedimientos permiten procesar el documento guiado por

eventos
Los eventos son las ocurrencias de los elementos a los que hacen referencia.
Los datos son los elementos asociados con el elemento identificado

SAX
Manejadores de contenido

Son los procedimientos que se invocan cuando se identifica un

elemento.

correspondiente.

El código solo se ejecuta cuando el analizador identifica el elemento

Esto permite no tener que cargar todo el documento en memoria.
Es la tecnología más eficiente de manipulación de documentos XML

Sobre todo para documentos muy extensos.

5

SAX
Manejadores de contenido

SAX define cuatro manejadores de contenido
Todos los demás los tiene que construir el programador de

la aplicación

SAX
Manejadores estándar

ContentHandler

XML
ErrorHandler

DTDHandler

permite manejar eventos relacionados con los datos de un documento

recibe información sobre errores en los datos del documento XML

permite manejar eventos relacionados con el análisis de un DTD. No

atiende a eventos relacionados con la validación. Poco usado

EntityResolver

analiza entidades externas que se especifican en el documento XML

que se está analizando.

6

SAX
Manejadores de Contenido

Localizador de documento

Se llama siempre que ocurre un evento.
Permite conocer qué parte del documento XML se está analizando

(línea y columna)
Comienzo del documento:

startDocument()
Indica el comienzo del análisis.
Es el primero de todos los métodos que se llama.

Fin del documento:
endDocument()
Indica el fin del análisis.
Es el último de todos los métodos que se llama.

SAX
Manejadores de Contenido

Instrucciones de proceso

Son directivas para la aplicación que está trabajando con el documento

XML y no se consideran elementos XML

Cocoon las utiliza para indicar como presentar los datos una vez

analizados.

Informa del destino de la instrucción de proceso (target) y los datos

(data)

Espacio de nombres

Indica el comienzo y el fin de un espacio de nombres en el documento

XML

Informa del prefijo del espacio de nombres y de la URI asociada a ese

prefijo.

<alias:Elemento1 xmlns:alias=”http://mio.com”>

<alias:Elem2>HOLA</alias:Elem2>

</alias:Elemento1>

7

SAX
Manejadores de contenido

Elemento

Indica el inicio y el fin de un elemento XML
Informa del nombre del elemento y de los atributos que posee.

Permite recorrer los atributos mediante un bucle.
Los atributos pueden no estar ordenados.

Datos del elemento

Los elementos anidados dentro de otros elementos generan llamadas

recursivas hasta encontrar datos de tipo texto.

Informa de los datos mediante una matriz que contiene la información

extraída del documento XML

No está claramente especificado si los datos se devuelven todos de

una vez o mediante llamadas sucesivas.

SAX
Manejadores de errores

Sirve para tratar los errores que se puedan producir durante el análisis.
Cada llamada recibe la información a través de la excepción

SAXParseException
Contiene el número de línea.
La URI del documento XML que se está tratando.
Detalles de la excepción.
Mensaje explicativo.
Traza de la pila.

3 tipos: Avisos (warning), errores y errores fatales

8

SAX
Ejemplo:SimpleSAX

import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.apache.xerces.parsers.SAXParser;

public class SimpleSAX extends DefaultHandler {

public void startElement(String ns, String local, String qName, Attributes atts) {

System.out.println("startElement: " + local);

}

public static void main(String[] args) throws SAXException {

SimpleSAX s = new SimpleSAX();
SAXParser p = new SAXParser();
p.setContentHandler(s);

try {
p.parse(args[0]);
} catch (Exception e) {e.getMessage(); }}

}

SAX
ContentHandler

Principales métodos que define esta interfaz :

setLocator
setLocator
startDocument
startDocument
endDocument
endDocument
startElement
startElement
endElement
endElement
characters
characters
...etcétera

9

SAX
Locator

Proporciona una serie de métodos como getLineNumber y

getColumnNumber que permiten saber la ubicación actual en el
fichero XML donde tuvo lugar el último evento

Sólo tiene validez dentro de un ContentHandler
Se suele asignar a un atributo de la clase

Locator locator
locator;;

private Locator
private
public voidvoid setDocumentLocator(Locator
public
{{
}}

this.locator = = locator
locator;;
this.locator

setDocumentLocator(Locator locator
locator))

SAX
Principio y final de un documento

Se corresponden con los eventos startDocument y endDocument,

respectivamente

Son siempre el primer y el último método llamados, no sólo dentro

del ContentHandler, sino en el proceso de análisis completo
Incluso en la presencia de otros manejadores, como

DTDHandler
DTDHandler

10

SAX
Una nota sobre las excepciones

Muchos de los métodos de respuesta a eventos SAX, como los dos

anteriores, declaran una excepción SAXException

Es el único tipo de excepción que puede lanzar un analizador SAX

Cualquier otra excepción será encapsulada en ésta

Por ejemplo, si se procesa un documento a través de la red

y se produce una excepción de entrada/salida
(IOException)

A través del método getException

getException se puede acceder a la

excepción subyacente

SAX
Elementos

Hay tres eventos SAX que nos permiten acceder al contenido en sí del

documento analizado:
El principio y final de los elementos

elementos y el método characters
characters
startElement proporciona información sobre un elemento XML:

Nombre
Espacio de nombres, si lo hubiera
Atributos: En un objeto org.xml.sax.Attributes
org.xml.sax.Attributes

Similar a una lista o vector

endElement es muy similar al anterior, pero para el final del elemento

11

SAX
Contenido de un elemento

Una vez que hemos visto cómo saber el principio y fin de un

elemento y los atributos de éste, es necesario poder acceder al
contenido del mismo

Puede estar formado por elementos hijos, información textual, o una

combinación de ambos

A dicha información textual se accede mediante el método

characters, en forma de un array de caracteres

void characters(char[] ch, int start, int length)

SAX
Sobre el método characters

SAX no define cómo se devolverán grandes porciones de datos

textuales a través de este método
Puede ser en una única llamada, pero también podrían partirse

en varias invocaciones al método characters
characters

Y hay también que tener en cuenta el carácter secuencial del

procesamiento mediante SAX
¿Qué eventos tendrán lugar para el siguiente fragmento de

XML?:

<padre>EstoEsto eses<<hijohijo>¡>¡holahola!</!</hijohijo>un >un ejemplo
<padre>

ejemplo</padre>
</padre>

12

Sea el siguiente documento XML:

Ejemplo: videoclub.xml

<?xml version="1.0" encoding="ISO-8859-1"?>
<videoclub>

<pelicula titulo="2001: una odisea del espacio" año="1968" duracion="143">



</pelicula>


</videoclub>

<guionista>Stanley Kubrick</guionista>
<guionista>Arthur C. Clarke</guionista>

<guion>

</guion>
<direccion>

<director>Stanley Kubrick</director>

</direccion>

<sinopsis>"2001: Una Odisea del Espacio" es una cuenta atras hacia el futuro,

un mapa del destino humano, una conquista del infinito, un apasionante drama
sobre el hombre que lucha contra la maquina.</sinopsis>

</pelicula>
<pelicula titulo="Alien resurreccion" año="1998" duracion="105">

Ejemplo: videoclub.xml

Hacer un programa que muestre la siguiente información acerca de

cada película:
Título, año de rodaje y duración

Como esa información está disponible en los atributos del elemento

<pelicula>, bastará con redefinir el método startElement

13

Segundo ejemplo

Ahora, además de lo
  • Links de descarga
http://lwp-l.com/pdf11405

Comentarios de: XML, Servicios Web y Web Semántica (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad