1 Sistemi Informativi e Servizi in Rete Università degli Studi di Brescia Facoltà di Ingegneria Parsing di documenti XML.

Slides:



Advertisements
Presentazioni simili
I Namespace Mario Arrigoni Neri.
Advertisements

TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
Introduzione al DTD Mario Arrigoni Neri.
Introduzione ad XML Mario Arrigoni Neri.
Simple API for XML Processing (SAX) Document Object Model (DOM) Mario Arrigoni Neri.
Commenti C#.
Consumare Web Service Andrea Saltarello
1 Introduzione ad XML. 2 Problemi con SGML Complesso da comprendere ed utilizzare Non è pensato per la rete: mancano link ipertestuali e specifiche grafiche.
Document Type Definition per XML Presentazione 8.1 Informatica Generale (Prof. Luca A. Ludovico)
Massa Laura Mela Enrica
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
Re-engineering del wrapper XML Schema per il sistema MOMIS
Frontespizio Economia Monetaria Anno Accademico
1 Tavolo del Patto per la crescita intelligente, sostenibile e inclusiva Il ricorso agli ammortizzatori sociali nei territori colpiti dagli eventi sismici.
Programmazione Procedurale in Linguaggio C++
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
1 Il servizio di prestito e fornitura documenti ILL-SBN una visione di insieme caratteristiche della procedura illustrazione delle funzionalità
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Dipartimento di Ingegneria Idraulica e Ambientale - Universita di Pavia 1 Scritte scritte scritte scritte scritte scritte scritte Scritte scritte Titolo.
DHTML: Modello degli Eventi 1. 2 Sommario Introduzione Evento onclick Evento onload Gestione errori con onerror Gestione mouse con levento onmousemove.
Strutture di controllo in C -- Flow Chart --
Analisi di Immagini e Dati Biologici
Elaborazione di Franco Grivet Chin
1 XPath. 2 What is XPath? XPath is a syntax for defining parts of an XML document XPath uses paths to define XML elements XPath defines a library of standard.
19 Lezione 21/5/04 Composizione dell'immagine 1 COMPOSIZIONE DELLIMMAGINE.
Portale Capacità STOGIT
Accesso ai dati su file Lab. Sistemi Informativi Economico-Aziendali Accesso ai dati su file Localizzazione dei dati File system locali e distribuiti Protocolli.
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Melfi, 1 aprile 2011 – MediaShow 1 Social Network: possibilità di uso consapevole nella didattica Uso, consapevolezza, opportunità, proposte Caterina Policaro.
Javascript: fondamenti, concetti, modello a oggetti
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
1 Guida per linsegnamento nei corsi per il conseguimento del CERTIFICATO DI IDONEITÀ ALLA GUIDA DEL CICLOMOTORE.
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
LE SAI LE TABELLINE? Mettiti alla prova!.
La versione 18 di Aleph500: le novità CATALOGAZIONE Rita Vanin Ottobre 2007.
Creare pagine web Xhtlm. Struttura di una pagina.
Presentazione del problema Obiettivo: Lapplicazione di Search of Sematic Services permette di ricercare sevizi semantici, ossia servizi a cui sono associati.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Progettare corsi con Moodle
CMDBuild: un progetto open source di supporto alla gestione ICT Esempi di workflow implementati in ottica ITIL CMDBuild è un progetto di: Tecnoteca srl.
Modulo 6 Test di verifica
Corso di ELETTROTECNICA
INTRODUZIONE A JAVASCRIPT
1 Sistemi Informativi e Servizi in Rete Università degli Studi di Brescia Facoltà di Ingegneria Parsing di documenti XML Esercizi.
Programmazione ad oggetti
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
Programmazione Web eXtensible Markup Language (XML) 2014/2015Programmazione Web - XML1.
1 Microsoft Access Gruppo di lavoro Alberti, Boldi, Gaito, Grossi, Malchiodi, Mereghetti, Morpurgo, Rosti, Palano, Zanaboni Informatica per laurea triennale.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.
A.a. 2004/05Tecnologie Web1 Introduzione a XML: Document Type Definition; parser XML; XML-schema; eXtensible Stylesheet Language.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Ingegneria del software Modulo 3 -Tecniche di implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
WWW Fabio Vitali Cosa debbo rispondere? From: "XY" To: Subject: Semantic Search Engine Date: Thu, 16 May :05: Professor Vitali, mi chiamo.
Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
1 Il linguaggio XML per la rappresentazione dei dati Lo Extensible Markup Language o XML è stato concepito da un gruppo di lavoro del World Wide Web Consortium.
Transcript della presentazione:

1 Sistemi Informativi e Servizi in Rete Università degli Studi di Brescia Facoltà di Ingegneria Parsing di documenti XML

2 XML parsing Sistemi Informativi e Servizi in Rete Sommario Definizione e tipologie di parser XML Simple API for XML (SAX) Document Object Model (DOM)

3 XML parsing Sistemi Informativi e Servizi in Rete Che cos’è un parser XML? Il parser XML è un’applicazione che:  recupera il documento XML  carica i dati in memoria  presenta all’applicazione che lo invoca un’interfaccia di alto livello  fornisce servizi di validazione (opzionale)  fornisce servizi di ricerca (opzionale)

4 XML parsing Sistemi Informativi e Servizi in Rete Che cos’è un parser XML? XMLDTD XML parser Applicazione XSD

5 XML parsing Sistemi Informativi e Servizi in Rete Parsing di documenti XML Due diversi approcci  approccio ad eventi » il parser scandisce l’intero documento XML » ogni volta che incontra un nuovo elemento, informa l’applicazione usando la tecnica del Callback  approccio basato su modello » il parser costruisce internamente una struttura ad albero che rappresenta il documento XML (albero sintattico) » fornisce all’applicazione delle API che permettono la navigazione dell’albero sintattico

6 XML parsing Sistemi Informativi e Servizi in Rete Approccio ad eventi Il Signore degli Anelli J.R.R. Tolkien Bompiani XML Parser Applicazione LibroTitolo Autore … t

7 XML parsing Sistemi Informativi e Servizi in Rete Approccio basato su modello Il Signore degli Anelli J.R.R. Tolkien Bompiani XML Parser Applicazione Librodisponibilità=“…” Titolo attr Editore

8 XML parsing Sistemi Informativi e Servizi in Rete Approccio ad eventiApproccio basato su modello E’ molto “leggero” Il programmatore può implementare solo le funzionalità necessarie Fornisce all’applicazione un modello ricco del documento Mantiene una rappresentazione completa e durevole in memoria Interfaccia troppo semplice; si richiede più codice nell’applicazione Nessun supporto per operare sul documento Richiede un'occupazione di memoria per tutto il documento

9 XML parsing Sistemi Informativi e Servizi in Rete JAXP Java API for XML Processing (JAXP) Supporto standard della SUN per l’elaborazione di documenti XML Propone due implementazioni: – SAX (Simple API for XML) ad eventi – DOM (Document Object Model) basato su una rappresentazione interna dell’albero sintattico

10 XML parsing Sistemi Informativi e Servizi in Rete Sommario Definizione e tipologie di parser XML Simple API for XML (SAX) Document Object Model (DOM)

11 XML parsing Sistemi Informativi e Servizi in Rete SAX Simple API for XML Nasce come API alternativa al DOM per l’ambiente Java  successivamente adottato anche al di fuori del mondo Java (e.g., Microsoft) Basa il suo sistema di parsing sugli eventi  inizio di un documento  apertura e chiusura di un elemento  apertura e chiusura di un blocco CDATA  ingresso ed uscita dallo scope di un namespace  fine del documento

12 XML parsing Sistemi Informativi e Servizi in Rete Architettura SAX Applicazione Listener Handler Parser Registra Listener (1) Inizia Scansione (2) XML Iniziodoc, inizioelem,.. (3)

13 XML parsing Sistemi Informativi e Servizi in Rete L’Handler del SAX (1) L’applicazione deve implementare l’interfaccia org.xml.sax.helpers.ContentHandler interface ContentHandler { 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); }

14 XML parsing Sistemi Informativi e Servizi in Rete L’Handler del SAX (2) La classe DefaultHandler implementa l’interfaccia permettendo all’applicazione di ridefinire (override) solo i metodi desiderati

15 XML parsing Sistemi Informativi e Servizi in Rete L’Handler del SAX (2) La classe DefaultHandler implementa l’interfaccia permettendo all’applicazione di ridefinire (override) solo i metodi desiderati

16 XML parsing Sistemi Informativi e Servizi in Rete Parser SAX: i package I package da importare sono i seguenti

17 XML parsing Sistemi Informativi e Servizi in Rete Elaborare un documento XML con SAX (II) Per elaborare un documento XML con SAX è prima di tutto necessario istanziare un oggetto SAXParseFactory

18 XML parsing Sistemi Informativi e Servizi in Rete Elaborare un documento XML con SAX (II)

19 XML parsing Sistemi Informativi e Servizi in Rete Elaborare un documento XML con SAX (III) Prima di utilizzare il parser è possibile settare le sue proprietà e le sue features – settare una feature significa abilitare/disabilitare alcune funzionalità del parser (per esempio, l'uso dei namespace o la validazione tramite DTD o XSD) – settare una proprietà significa modificare il valore di elementi su cui il parser opera (per esempio, l'URL dell'XSD da utilizzare per la validazione)

20 XML parsing Sistemi Informativi e Servizi in Rete Settare le features del parser SAX (I) L'istruzione seguente abilita la validazione (spf è istanza di SAXParserFactory) L'istruzione seguente abilita l'utilizzo dei namespace Il metodo getFeature(String name) recupera le impostazioni settate Per un elenco delle features disponibili, si veda

21 XML parsing Sistemi Informativi e Servizi in Rete Settare le features del parser SAX (II) La validazione e l'utilizzo dei namespace possono essere abilitati anche attraverso dei metodi ad-hoc della classe SAXParserFactory Le proprietà si gestiscono in modo simile con i seguenti metodi Per un elenco delle proprietà disponibili, si veda

22 XML parsing Sistemi Informativi e Servizi in Rete Validare un documento XML con un parser SAX (I) La validazione avviene ridefinendo i metodi per la gestione degli errori nel parser e settando le opportune features e proprietà quando si invoca il parser

23 XML parsing Sistemi Informativi e Servizi in Rete Validare un documento XML con un parser SAX (I) La validazione avviene ridefinendo i metodi per la gestione degli errori nel parser e settando le opportune features e proprietà quando si invoca il parser

24 XML parsing Sistemi Informativi e Servizi in Rete Metodi per la gestione degli errori void error(SAXParserException exception) – non interrompe il processo di parsing void fatalError(SAXParserException exception) – interrompe il processo di parsing void warning(SAXParserException exception) Si tratta di metodi dell'interfaccia ErrorHandler, implementata sempre in DefaultHandler La classe SAXParserException presenta il metodo int getLineNumber() restituisce il numero di riga dove si è verificato l'errore

25 XML parsing Sistemi Informativi e Servizi in Rete Metodi per la gestione degli errori

26 XML parsing Sistemi Informativi e Servizi in Rete Settare il parser SAX per la validazione

27 XML parsing Sistemi Informativi e Servizi in Rete Sommario Definizione e tipologie di parser XML Simple API for XML (SAX) Document Object Model (DOM)

28 XML parsing Sistemi Informativi e Servizi in Rete DOM E’ una API per il parsing di documenti XML Definisce una modalità di rappresentazione di documenti XML Usa strutture dati accessibili dall’applicazione Definisce le operazioni per agire sulla rappresentazione intermedia  caricamento della struttura  costruzione di un nuovo documento  navigazione dell’albero sintattico  aggiungere, eliminare, modificare e spostare le componenti Esistono implementazioni di DOM per diversi linguaggi di programmazione  linguaggi server-side: Java, C++, C#  linguaggi di script: VB-script, Javascript

29 XML parsing Sistemi Informativi e Servizi in Rete La struttura di DOM I documenti XML sono caricati sotto forma di albero sintattico, composto da oggetti di tipo Node  ogni nodo può avere uno o più figli DOM definisce solo la vista logica e non dice nulla sull’effettiva struttura in memoria Come modello ad oggetti si specificano  gli oggetti utilizzati per rappresentare il documento ed i suoi costituenti  le interfacce pubbliche degli oggetti per poter essere utilizzate dal livello applicativo  le relazioni tra gli oggetti e le interfacce  la semantica associata ad ogni classe

30 XML parsing Sistemi Informativi e Servizi in Rete Esempio di DOM The &projectName; project is important MAIS project MIUR FIRB + ELEMENT: sentence + TEXT: The + ENTITY REF: projectName + TEXT: project is important + ELEMENT: name + TEXT: MAIS project + ELEMENT: typology + TEXT: MIUR FIRB

31 XML parsing Sistemi Informativi e Servizi in Rete Caricamento di un DOM Il DOM di JAXP è definito nel package org.w3c.dom  interfaccia standard che si appoggia su implementazioni differenti (SUN, Apache, Oracle)  l’implementazione di SUN è nel package javax.xml.parsers import org.w3c.dom.*; import javax.xml.parsers.*; import org.xml.sax.*; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("libro.xml"); Definizione DOM standard Implementazione di JAXP DOM usa SAX

32 XML parsing Sistemi Informativi e Servizi in Rete Settare le proprietà del parser DOM void setIgnoringComments(boolean option) – il parser ignora i commenti nel file XML void setIgnoringElementContentWhiteSpace(boolen option) – il parser ignora gli spazi bianchi nel contenuto degli elementi void setNamespaceAware(boolean option) void setValidating(boolean option) Esistono inoltre i metodi per recuperare le opzioni di settaggio: isIgnoringComments(), isIgnoringElementContentWhitespace(), isNamespaceAware(), isValidating()

33 XML parsing Sistemi Informativi e Servizi in Rete Navigazione di un documento Estrazione del nodo radice e stampa del nome del nodo Nodi figli Attributi Element root = doc.getDocumentElement(); System.out.println(root.getNodeName()); NodeList children = root.getChildNodes(); for (int i = 0; i < children.getLength(); i++) System.out.println(children.item(i).getNodeName); NamedNodeMap map = root.getAttributes(); for (int i = 0; i < map.getLength(); i++) System.out.println(map.item(i).getNodeName());

34 XML parsing Sistemi Informativi e Servizi in Rete Tipizzazione in DOM n.getNodeType() == n.ELEMENT_NODE Tipo di nodonodeNamenodeValueattributes ElementNome del tagnullNamedNodeMap AttrNome dell’attributoValore dell’attributonull Text“#text”Testo associatonull CDATASection“#cdata-section”Testo associatonull EntityReferenceNome dell’entitànull EntityNome dell’entitànull ProcessingInstructionValore dell’attributo targetContenuto escluso l’attributo targetnull Comment“#comment”Testo associatoNull Document“#document”nullNull DocumentTypeNome del tipo di documentonullNull DocumentFragment“#document-fragment”Null NotationNome della NOTATIONnullNull

35 XML parsing Sistemi Informativi e Servizi in Rete Validazione in DOM La validazione segue le stesse regole viste per il parser SAX Una volta abilitata, la validazione di default avviene sulla base del DTD, a meno che non si usi la seconda istruzione appena mostrata factory.setAttribute(" " factory.setAttribute(" schema);

36 XML parsing Sistemi Informativi e Servizi in Rete Gestione degli errori in DOM DOM eredita la gestione degli errori di SAX Deve essere definito un handler che implementa l'ErrorHandler e in cui sono definiti i tre metodi error, fatalError e warning, a cui si passa un'istanza di SAXParserException Il parser DOM deve essere registrato come listener per gli eventi che segnalano un errore Class Handler implements ErrorHandler... builder.setErrorHandler(new Handler());

37 XML parsing Sistemi Informativi e Servizi in Rete Esempio: navigazione e stampa (I)

38 XML parsing Sistemi Informativi e Servizi in Rete Esempio: navigazione e stampa (II)

39 XML parsing Sistemi Informativi e Servizi in Rete Esempio: navigazione e stampa (II)

40 XML parsing Sistemi Informativi e Servizi in Rete Modifica del DOM DOM consente di inserire nuovi nodi nell'albero sintattico Element root = doc.getDocumentElement(); Element cap = doc.createElement("capitolo"); cap.setAttribute("titolo", "Introduzione"); cap.appendChild(doc.createTextNode("... testo...")); Node capitolo = doc.getElementsByTagNameNS(" "capitolo").item(0); root.insertBefore(cap, capitolo); doc.normalize(); Creazione del nodo Creazione dell’attributo Ricerca del primo capitolo presente Inserimento normalizzazione. Es: unisce nodi di testo consecutivi