SAX e DOM UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico 2006-07.

Slides:



Advertisements
Presentazioni simili
Windows Per questa parte: Elementi dell'interfaccia grafica.
Advertisements

Simple API for XML Processing (SAX) Document Object Model (DOM) Mario Arrigoni Neri.
1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
1 Progettazione gerarchica delle s- espressioni, utilizzando lereditarietà
Interfacce Java.
SAX e DOM UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
Il semantic Web UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
Introduzione a XML UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
XPATH UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
XSLT UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico
WSDL (Web Services Description Language) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
SAX & DOM Laurea Magistrale in Informatica Reti 2 (2005/06) dott. Francesco De Angelis
UDDI (Universal Description, Discovery and Integration Protocol) Laurea Magistrale in Informatica Reti 2 (2006/07) dott. Federico Paoloni
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
Capitolo 7 Programmazione con metodi e classi Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © 2004.
JPA Overview della tecnologia. Java Persistence Architecture Definita nella JSR-220 EJB 3.0 ( Tentativo di unificare EJB2.1 con.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
EJB Enterprise Java Beans B. Pernici. Approccio Java.
Layouts and Graphics. component - container - layout Un Container contiene [0 o +] Components Il Layout specifica come i Components sono disposti nel.
Model – View - Controller
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
J0 1 Marco Ronchetti - Basi di Dati Web e Distribuite – Laurea Specialitica in Informatica – Università di Trento.
Modificatori: static Variabili e metodi associati ad una Classe anziche ad un Oggetto sono definiti static. Le variabili statiche servono come singola.
Richiami di Java Multithreading. Threads (subclassing) public class A { public void a_method { C t = new C(); //C t = new C(String name); t.start(); …
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Cenni di Real-Time JAVA E.Mumolo, DEEI
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
Java Database Connection (dal corso dei Servizi Web)
Programming with JXTA Hello World Peer discovery Peer Group discovery Creating Peer group Joining a Peer Group.
Università La Sapienza Ingegneria del Software I 1 Ingegneria del software I Seminario 3:Enterprise Java Beans.
© CEFRIEL Cenni su XML in Java Docente: Gabriele Lombardi
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Packages. Package: insieme di classi e interfacce in relazione Per formare un package basta inserire la direttiva come prima istruzione nel file sorgente.
FONDAMENTI DI INFORMATICA III WfMC-1. FONDAMENTI DI INFORMATICA III WfMC-2 WFMC Cose WfMC Workflow Management Coalition (WfMC), Brussels, è unorganizzazione.
Gestione File System e I/O in Windows 2000 Implementazione del File System FAT-12, FAT-16, FAT-32 NTFS API relative al File System Gestione dei dispositivi.
Programmazione distribuita in Java
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Un esempio: Registrazione e lettura di dati in un file
JavaScript Lezione 5 Tipizzazione ed operazioni tra tipi diversi Istruzioni di input.
Corso di Elementi di Informatica
I social commerce [Carpe diem]. I club dacquisto online I social coupon Gli e-tailer tradizionali I facebook shops Esempi di social commerce.
Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 6 ARGOMENTI: LAVORARE CON CLASSI METODI DELLISTANZA, COSTRUTTORI.
PROGETTO DI STRUMENTI PER LA CONFIGURAZIONE DI APPLICAZIONI JAVA ENTERPRISE Anno Accademico 2006 / 2007 Sessione III FACOLTÀ DI INGEGNERIA CORSO DI LAUREA.
Facelets case study: Ricettario Docente: Gabriele Lombardi
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Scoprirete che su Office non si può solo contare ma anche sviluppare.
/ Elementi di C++ Introduzione a ROOT , Laboratorio Informatico ROOT warm up , Laboratorio Informatico Introduzione a.
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Visual Studio Tools for Office: Developer Solutions Platform Fulvio Giaccari MCSD.NET / MCT Responsabile Usergroup ShareOffice Blog:
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
1 Simulated multiple inheritance Sandro Pedrazzini Approfondimento Simulated multiple inheritance in Java.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Collection & Generics in Java
Fondamenti di informatica T-A Esercitazione 7 : Collezioni AA 2012/2013 Tutor : Domenico Di Carlo.
Sistemi di elaborazione dell’informazione Modulo 3 -Protocolli applicativi Unità didattica 4 - Protocolli del Web Ernesto Damiani Lezione 3 – Esempi HTTP.
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
Nuove funzionalitA’ e caratteristiche del linguaggio
1 Sistemi Informativi e Servizi in Rete Università degli Studi di Brescia Facoltà di Ingegneria Parsing di documenti XML.
Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.
Java World Introduzione.
Corso Java Introduzione.
Java Introduzione.
Transcript della presentazione:

SAX e DOM UNIVERSITA DI CAMERINO Corso di laurea in Informatica Barbara Re Anno Accademico

Laboratorio Informatico in Database Turistici Barbara Re2 Il parser Il parser si occupa d Recuperare il documento XML Caricare i dati in memoria Presentare allapplicazione uninterfaccia di alto livello (opzionalmente) fornire servizi di validazione (opzionalmente) fornire servizi di ricerca XMLDTD XML parser Applicazione XSD

Laboratorio Informatico in Database Turistici Barbara Re3 Approccio ad eventi Il parser scandisce lintero file Per ogni elemento informa lapplicazione tramite la tecnica del callback Francesco De Angelis Alberto Polzonetti... XML Parser Applicazione libroautore nome … t

Laboratorio Informatico in Database Turistici Barbara Re4 Approccio del modello Il parser costruisce una struttura ad albero che rappresenta il documento Fornisce allapplicazione delle API per navigare lalbero Francesco De Angelis Alberto Polzonetti... XML Parser Applicazione librotitolo=… autore nome cognome attr

Laboratorio Informatico in Database Turistici Barbara Re5 Confronto tra gli approcci Approccio ad eventiApproccio del modello Pro E molto leggero Il programmatore può implementare solo le funzionalità necessarie fornisce allapplicazione un modello ricco del documento mantiene una rappresentazione completa e durevole in memoria Contro Interfaccia troppo semplice = si richiede più codice nellapplicazione Nessun supporto per operare sul documento richiede una occupazione di memoria per tutto il documento

Laboratorio Informatico in Database Turistici Barbara Re6 JAXP Java API for XML Processing (JAXP) Supporto standard di SUN per lelaborazione di XML Propone due standard per le due impostazioni SAX (Simple API for XML) ad eventi DOM (Document Object Model) basato su una rappresentazione astratta in memoria

Laboratorio Informatico in Database Turistici Barbara Re7 Anche se si ritenesse DOM come la scelta migliore per la propria applicazione Java, capire SAX è importante per vari motivi Il sistema di gestione degli errori del DOM è ereditato da SAX Essendo SAX la prima API XML per Java, resta alla base anche dellimplementazione DOM Le librerie Java usano SAX per leggere un file XML e creare il DOM corrispondente! SAX e DOM

Laboratorio Informatico in Database Turistici Barbara Re8 Simple API for XML

Laboratorio Informatico in Database Turistici Barbara Re9 Introduzione a SAX SAX, o Simple API for XML, in origine è stata sviluppata come API per accedere ad XML con Java. La homepage del progetto SAX (SourceForge) è Basa il suo sistema di parsing sugli eventi Inizio di un documento Apertura e chiusura di un elemento Apertura e chiusura di un blocco caratteri Ingresso ed uscita dallo scope di un namespace Caratteri, Process Instruction Fine del documento

Laboratorio Informatico in Database Turistici Barbara Re10 Utilità e Limiti di SAX Il parser SAX non costruisce documenti XML, né conserva alcuna struttura in memoria alla fine del parsing. Se il programmatore vuole operare sul documento letto, dovrà scrivere manualmente tutto il codice, basandosi sui dati passati con gli eventi SAX. In generale SAX necessita di molto più codice di DOM, ma è molto più leggero. Il programmatore può implementare solo quello che è strettamente utile, e non è necessario allocare il documento in memoria.

Laboratorio Informatico in Database Turistici Barbara Re11 Gestire gli Eventi SAX Per ricevere le notifiche dal parser SAX, il codice deve registrare nel parser una classe org.xml.sax.DefaultHandler che implementa linterfaccia org.xml.sax.ContentHandler I vari metodi di questa interfaccia ricevono tutte le informazioni necessarie per trattare gli eventi. Ad esempio, il metodo startElement riceve il nome dellelemento e del suo namespace, nonché la lista degli attributi associati.

Laboratorio Informatico in Database Turistici Barbara Re12 Interface ContentHandler { void setDocumentLocator(Locator locator); void startDocument(); void startElement(String namespaceURI,String localName, String qName, Attributes atts); void startPrefixMapping(String prefix, String uri); void characters(char[] ch, int start, int length); void endDocument(); void endElement(String namespaceURI,String localName, String qName); void endPrefixMapping(String prefix); void ignorableWhitespace(char[] ch, int start, int length); void processingInstruction(String target, String data); void skippedEntity(String name); } Lhandler di SAX

Laboratorio Informatico in Database Turistici Barbara Re13 public class MyHandler extends DefaultHandler { public void startElement(String namespaceURI, String localName, String qualifiedName, Attributes att) throws SAXException { System.out.println("startElement: " + qualifiedName); } public void characters(char ch[], int start, int length) throws SAXException { System.out.println("characters " + start + " to " + (start + length - 1) + ": " + new String(ch, start, length)); } public void endElement(String namespaceURI, String localName, String qualifiedName) throws SAXException { System.out.println(endElement: /" + qualifiedName); } La classe DefaultHandler implementa linterfaccia permettendo allapplicazione di ridefinire (override) solo i metodi desiderati Lhandler di SAX

Laboratorio Informatico in Database Turistici Barbara Re14 public class SimpleSax { public static void main(String[] args) { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); SAXParser sxp; sxp = factory.newSAXParser(); DefaultHandler handler = new SimpleHandler(); sxp.parse(new File("xml/articolo.xml").getAbsolutePath(),handler); } Il client utilizza la classe di Factory per recuperare il parser Al parser viene chiesto di parsare il file come un processo autonomo Utilizzo dellhandler SAX

Laboratorio Informatico in Database Turistici Barbara Re15 Gestire gli Errori SAX Gli errori generati dal parser SAX sono incapsulati in eccezioni che però non vengono mai sollevate. Invece, le eccezioni vengono passate a un oggetto con interfaccia ErrorHandler registrato nel parser. Se nessun oggetto di questo tipo viene specificato dal programmatore, gli errori di parsing non vengono segnalati! Anche il DOM usa questo modello di errore!

Laboratorio Informatico in Database Turistici Barbara Re16 ErrorHandler Interface ErrorHandler { void error(SAXParseException exception) void fatalError(SAXParseException exception) void warning(SAXParseException exception) } Class SAXParseException { int getColumnNumber() int getLineNumber() String getPublicId() String getSystemId() } üLa classe org.xml.sax.helpers.DefaultHandler fornisce una implementazione di default per ErrorHandler e altre interfacce utili per SAX üE possibile estendere questa classe per implementare più facilmente il proprio ErrorHandler

Laboratorio Informatico in Database Turistici Barbara Re17 SAX con JAXP import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import org.xml.sax.helpers.DefaultHandler; SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); try { SAXParser sxp = factory.newSAXParser(); } catch (javax.xml.parsers.ParserConfigurationException) { } DefaultHandler handler = new DefaultHandler(); try { sxp.parse(filename,handler); } catch (java.io.IOException ioe) { } catch (org.xml.sax.SAXParseException spe) { } catch (org.xml.sax.SAXException se) { }

Laboratorio Informatico in Database Turistici Barbara Re18 SAX con Xerces import org.apache.xerces.parsers.SAXParser; import org.xml.sax.helpers.DefaultHandler; SAXParser sxp = new SAXParser(); try { sxp.setFeature( " true ); } catch (org.xml.sax.SAXNotRecognizedException ex ) { } catch (org.xml.sax.SAXNotSupportedException ex ) { } DefaultHandler handler = new DefaultHandler(); sxp.setContentHandler(handler); sxp.setErrorHandler(handler); try { sxp.parse(filename); } catch (java.io.IOException ioe) { } catch (org.xml.sax.SAXParseException spe) { } catch (org.xml.sax.SAXException se) { }

Laboratorio Informatico in Database Turistici Barbara Re19 Simple API for XML

Laboratorio Informatico in Database Turistici Barbara Re20 Introduzione a SAX SAX, o Simple API for XML, in origine è stata sviluppata come API per accedere ad XML con Java. La homepage del progetto SAX (SourceForge) è Basa il suo sistema di parsing sugli eventi Inizio di un documento Apertura e chiusura di un elemento Apertura e chiusura di un blocco caratteri Ingresso ed uscita dallo scope di un namespace Caratteri, Process Instruction Fine del documento

Laboratorio Informatico in Database Turistici Barbara Re21 Utilità e Limiti di SAX Il parser SAX non costruisce documenti XML, né conserva alcuna struttura in memoria alla fine del parsing. Se il programmatore vuole operare sul documento letto, dovrà scrivere manualmente tutto il codice, basandosi sui dati passati con gli eventi SAX. In generale SAX necessita di molto più codice di DOM, ma è molto più leggero. Il programmatore può implementare solo quello che è strettamente utile, e non è necessario allocare il documento in memoria.

Laboratorio Informatico in Database Turistici Barbara Re22 Gestire gli Eventi SAX Per ricevere le notifiche dal parser SAX, il codice deve registrare nel parser una classe org.xml.sax.DefaultHandler che implementa linterfaccia org.xml.sax.ContentHandler I vari metodi di questa interfaccia ricevono tutte le informazioni necessarie per trattare gli eventi. Ad esempio, il metodo startElement riceve il nome dellelemento e del suo namespace, nonché la lista degli attributi associati.

Laboratorio Informatico in Database Turistici Barbara Re23 Eventi SetDocumentLocator e chiamato quando viene avviato il processo di parsing startDocument è chiamato quando il parser incontra linizio di un documento endDocument è chiamato quando il parser incontra la fine di un documento startElement è chiamato quando il parser incontra il tag iniziale di un Elemento endElement è chiamato quando il parser incontra il tag finale di un Elemento Character è chiamato quando il parser incontra dei testi

Laboratorio Informatico in Database Turistici Barbara Re24 public class SimpleSax { public static void main(String[] args) { SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); SAXParser sxp; sxp = factory.newSAXParser(); DefaultHandler handler = new SimpleHandler(); sxp.parse(new File("xml/articolo.xml").getAbsolutePath(),handler); } Il client utilizza la classe di Factory per recuperare il parser Al parser viene chiesto di parsare il file come un processo autonomo Utilizzo dellhandler SAX

Laboratorio Informatico in Database Turistici Barbara Re25 Gestire gli Errori SAX Gli errori generati dal parser SAX sono incapsulati in eccezioni che però non vengono mai sollevate. Invece, le eccezioni vengono passate a un oggetto con interfaccia ErrorHandler registrato nel parser. Se nessun oggetto di questo tipo viene specificato dal programmatore, gli errori di parsing non vengono segnalati! Anche il DOM usa questo modello di errore!

Laboratorio Informatico in Database Turistici Barbara Re26 ErrorHandler Interface ErrorHandler { void error(SAXParseException exception) void fatalError(SAXParseException exception) void warning(SAXParseException exception) } Class SAXParseException { int getColumnNumber() int getLineNumber() String getPublicId() String getSystemId() } üLa classe org.xml.sax.helpers.DefaultHandler fornisce una implementazione di default per ErrorHandler e altre interfacce utili per SAX üE possibile estendere questa classe per implementare più facilmente il proprio ErrorHandler

Laboratorio Informatico in Database Turistici Barbara Re27 SAX con JAXP import javax.xml.parsers.SAXParserFactory; import javax.xml.parsers.SAXParser; import org.xml.sax.helpers.DefaultHandler; SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setValidating(true); try { SAXParser sxp = factory.newSAXParser(); } catch (javax.xml.parsers.ParserConfigurationException) { } DefaultHandler handler = new DefaultHandler(); try { sxp.parse(filename,handler); } catch (java.io.IOException ioe) { } catch (org.xml.sax.SAXParseException spe) { } catch (org.xml.sax.SAXException se) { }

Laboratorio Informatico in Database Turistici Barbara Re28 Riferimenti Apache XML Project (xalan, xerces) Java JAXP Tutorial SAX Specifiche DOM dal W3C

Laboratorio Informatico in Database Turistici Barbara Re29 Ci sono domande?