Beruflich Dokumente
Kultur Dokumente
Arquitectura de Software
Referencias
Esta presentacin es un breve resumen de XML y no pretende ser exhaustiva. Para ms informacin por favor consultar las siguientes referencias: http://www.xml.com/axml/testaxml.htm: especificacin 1.0 de XML comentada. http://java.sun.com/webservices/docs/ea2/tutorial/doc/J AXPIntro.html: tutorial de JAXP http://www.javaworld.com/javaworld/jw-05-2002/jw-0517sax.html: generacin de parsers sax
Arquitectura de Software
Agenda
1. SAX 2. XSLT 3. DOM
Arquitectura de Software
Arquitectura de Software
Arquitectura de Software
Arquitectura de Software
Events
start document start element: nombreCompleto start element: apellido characters: Casallas end element: apellido start element: nombre characters: Rubby end element: nombre end element: nombreCompleto end document
Arquitectura de Software
start document se invoca el mtodo startDocument(...) sobre el objeto que est registrado!
Arquitectura de Software
JAXP
JAXP es la interface programable para procesar XML desde java Permite programar usando SAX, DOM y XSLT El paquete principal es: javax.xml.parsers package. Provee dos clases para crear parsers (independientes del proveedor):
SAXParserFactory DocumentBuilderFactory
Esto permite cambiar la implementacin del parser de XML sin cambiar el cdigo de la aplicacin.
Arquitectura de Software
Interfaces de SAX
ContentHandler: declara los mtodos: startDocument, endDocument, startElement, endElement (estos son invocados cuando un tag xml es encontrado) characters es invocado cuando el parser encuentra un texto en un elemento xml processingInstruction cuando encuentra una instruccin de procesamiento
10
Arquitectura de Software
Interfaces de SAX
ErrorHandler los mtodos: error, fatalError y warning son invocados en respuesta a varios tipos de error en el parser Por defecto se dispara una excepcin para errores fatales y se ignoran otros errores incluyecdo los de validacin. Para manejar los errores, de acuerdo con alguna poltica de la aplicain, se debe suministrar al parser un manejador de errores propio.
11
Arquitectura de Software
Interfaces de SAX
DTDHandler Se usa cuando se procesa un DTD para reconocer y manipular declaraciones de una entidad unparsed. Por ejemplo:
<!ENTITY mom-picture SYSTEM "http://www.home.com/mom.jpg" NDATA JPEG>
12
Arquitectura de Software
Interfaces de SAX
13
Arquitectura de Software
14
Arquitectura de Software
15
Arquitectura de Software
Al parser creado se le asocia una referencia a un objeto que manejar los eventos:
parser SAXParserFactory factory = SAXParserFactory.newInstance();
try { SAXParser saxParser = factory.newSAXParser(); saxParser.parse( new File(argv[0]), handler ); } catch (Throwable t) { t.printStackTrace(); } Esta es una referencia a una instancia de un manejador de eventos (una clase que implementa la interface Rubby Casallas G. ContentHandler) Departamento de Ingeniera de Sistemas
Universidad de los Andes
16
Arquitectura de Software
try { SAXParser saxParser = factory.newSAXParser(); saxParser.getXMLReader().setContentHandler (handler); saxParser.parse( new File(argv[0])); } catch (Throwable t) { t.printStackTrace(); } Se le est indicando al parser cul es la referencia que va a manejar los eventos
17
Arquitectura de Software
Contiene implementaciones por defecto para todos los mtodos de las interfaces SAX. Se debe extender esta clase para sobre cargar los mtodos que se necesiten:
18
Arquitectura de Software public class Echo extends DefaultHandler { public void startElement(...) throws SAXException { ... } public void { ... } ... // otros mtodos que se necesite sobrecargar } endElement(...) throws SAXException
19
Arquitectura de Software
public void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, Attributes attributes) throws SAXException { if (qName.equals (courseInfo")) { String id = attributes.getValue(id"); String header = Curso: "+id; System.out.println (header); System.out.println (); } }
20
10