Prof. Pagani corrado XML

Documenti analoghi
istituito l'xml Working Group nell'ambito del W3C che nel dicembre 97 pubblica delle Proposed Recomendation

I formati fotometrici su base XML: una rivoluzione nell interscambio dei dati

LEZIONE BASI DI DATI I 22/10/2008 XML

Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON

Programmazione lato client. JavaScript. Applicazioni di Rete M. Ribaudo - DISI. JavaScript

Nozioni di base per creare e visualizzare documenti XML

JavaScript JavaScript Programmazione lato client JScript JavaScript ECMAScript

SAX e DOM. Analisi di un documento

Prof. Pagani Corrado JAVASCRIPT DOCUMENT OBJECT MODEL

Voi fareste lo scambio? XML & Co. XML: le origini. XML: cosa è. XML: caratteristiche. XML: caratteristiche 02/03/2012

SOMMARIO: linguaggio xml. Contenuti. A cura dell Ing. Buttolo Marco INTRODUZIONE...2 STRUTTURA DOCUMENTO XML...2 VISUALIZZAZIONE DOCUMENTI XML...

XML A L B E R T O B E L U S S I A N N O A C C A D E M I C O /

INFORMATICA AA Università degli Studi di Ferrara Facoltà di Scienze MM FF NN Corso di Laurea in «Scienze e Tecnologie per i Beni Culturali»

L XML è un linguaggio di markup aperto e basato su testo che fornisce informazioni di tipo strutturale e semantico relative ai dati veri e propri.

XML e Windows Phone. Semplice tutorial per l'utilizzo di documenti e dati XML in un'app per Windows Phone.

Linguaggi per il Web: XML

Laboratorio di reti II: Extensible Markup Language

Sistemi ICT per il Business Networking

Politecnico di Milano Facoltà del Design Bovisa. Ing. Marco Funaro Dipartimento di Elettronica e Informazione.

Elementi di Base. Introduzione a Python.

Parte 6 JSON, Web Storage API, funzioni JavaScript e user script

Elaborazione di documenti XML

SimpleFS - un semplice filesystem. Prova finale di Algoritmi e Principi dell Informatica. DEIB, Politecnico di Milano. Anno accademico

tipi di dato astratti

Alberi Binario in Java

Introduzione a JavaScript. Prof. Francesco Accarino IIS Altiero Spinelli via leopardi 132 Sesto San Giovani

Gestione dei beneficiari CIG

Programmazione Web D B M G. Il linguaggio HTML

Annotazione del testo

D B M G Il linguaggio HTML

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

Programmazione Web D B M G. Il linguaggio HTML

D B M G. Basi di dati. Programmazione Web: HTML. Programmazione Web. Il linguaggio Politecnico di Torino 1

@2011 Politecnico di Torino 1

HTML 4.01 Prima lezione

@2011 Politecnico di Torino 1

LEZIONE 10 15/04/2019

Esercizio 1: archivio CD e DVD

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

SQL. Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

XML Programming: DOM e SAX

Sintassi dei DTD. <!DOCTYPE > <!ELEMENT > <!ATTLIST > <!ENTITY >: Entità generali <!ENTITY % >: Entità parametriche

Dispense XML. Indice

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

@2011 Politecnico di Torino 1

extensible Markup Language

Breve Introduzione a XML

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Fondamenti di informatica T-1 (A K) Esercitazione 9: array

Laboratorio di sistemi interattivi. Struttura di un applicazione Java-XML. Lezione 12: Java & XML

DTD ALBERTO BELUSSI ANNO ACCADEMICO 2009/2010. Document Type Definition (DTD) Un DTD è il linguaggio usato per descrive la

Prova d Esame Compito A

INFORMATICA AA Università degli Studi di Ferrara Facoltà di Scienze MM FF NN Corso di Laurea in «Scienze e Tecnologie per i Beni Culturali»

Esercitazione 8. Corso di Tecniche di programmazione. Laurea in Ingegneria Informatica

File XML il futuro dei file di interscambio dati

Il Web. Struttura e servizi

Alberi Binari Alberi Binari

3.3.6 Gli operatori Le funzioni di accesso al tipo Le strutture di controllo Le funzioni

Introduzione Programmazione Java

Variabili e input/ Alessandra Giordani Lunedì 18 marzo

Introduction to modern Fortran

LE STRUTTURE DATI DINAMICHE: GLI ALBERI. Cosimo Laneve

Implementazione ADT: Alberi

Basi di dati - Laboratorio

UNIVERSITA` DI BERGAMO ESAME DI INFORMATICA 12 CFU Modulo di Programmazione (ING. INFORMATICA) Prof. G. PSAILA PROVA IN ITINERE DEL 12/01/2017

ALBERI. Angelo Di Iorio Università di Bologna

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

In questa lezione Strutture dati elementari: Pila Coda Loro uso nella costruzione di algoritmi.

I Fondamenti del Linguaggio

Viene pubblicata la versione 1.0 di HTML:

Alberi binari di ricerca

Ingegneria del Software

Prof. Pagani Corrado JQUERY

Parte Input e output in linguaggio i C. 3. Programmazione strutturata 1 (if, switch, comunque segnalare dei warning

Introduzione alle classi e agli oggetti. Walter Didimo

XML - Extensible Markup Language (1)

AJAX. Riccardo Rosati

Introduzione al linguaggio C

Alberi binari e alberi binari di ricerca

Informatica Umanistica A.A. 2005/2006

Programmazione Procedurale in Linguaggio C++

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

Dati / Informazioni Strutturate

Informatica 3. LEZIONE 16: Heap - Codifica di Huffmann. Modulo 1: Heap e code di priorità Modulo 2: Esempio applicativo: codifica di Huffmann

The extensible Markup Language

Corso di PHP. Prerequisiti. 8.1 PHP e MySQL. Conoscenza MySQL Tecnica della programmazione

Programmare. Definire una sequenza di istruzioni che specificano come effettuare una elaborazione

Programmazione Web. Javascript.

Esercitazione 1 SQL: DDL e DML di base

XML: XLink. Alessandro Sorato - Linguaggi per la rete: XML Dipartimento di Informatica Università di Venezia Ca' Foscari

ciclo di vita della soluzione (informatica) di un problema

AJAX. Riccardo Rosati

Modifica Pagina Web. Pulsante LogOut: cliccare per uscire dall'ambiente di amministrazione

XML. Prof.Alessandra Giordani ITT Marconi Rovereto

Javascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin

Structured Query Language

Transcript:

Prof. Pagani corrado XML

INTRUDUZIONE ALL XML Contrariamente a quanto comunemente si pensa, l extensible Markup Language (XML) non è l ennesimo linguaggio di markup né l evoluzione dell HTML. L XML è un meta-linguaggio di markup, cioè un linguaggio che permette di definire altri linguaggi di markup. collezionare dati semi-strutturati in formato testuale A differenza di HTML, XML non ha tag predefiniti. Elevata versatilità

NASCITA DELL XML Il World Wide Web Consortium (W3C), in seguito alla guerra dei browser (ovvero la situazione verificatasi negli anni novanta nella quale Microsoft e Netscape introducevano estensioni proprietarie all'html ufficiale), fu costretto a seguire le individuali estensioni al linguaggio HTML. Il W3C dovette scegliere quali caratteristiche standardizzare e quali lasciare fuori dalle specifiche ufficiali dell'html. Fu in questo contesto che iniziò a delinearsi la necessità di un linguaggio di markup che desse maggiore libertà nella definizione dei tag, pur rimanendo in uno standard.

NASCITA DELL XML (2) Il "progetto XML", che ebbe inizio alla fine degli anni novanta suscitò un così forte interesse che la W3C creò un gruppo di lavoro, chiamato XML Working Group ed una commissione, XML Editorial Review Board, deputata alla redazione delle specifiche del progetto. Nel febbraio del 1998 le specifiche divennero una raccomandazione ufficiale con il nome di Extensible Mark-up Language, versione 1.0. Ben presto ci si accorse che XML non era limitato al solo contesto web ma era qualcosa di più: uno strumento che permetteva di essere utilizzato nei più diversi contesti, dalla definizione della struttura di documenti, allo scambio delle informazioni tra sistemi diversi, dalla rappresentazione di immagini alla definizione di formati di dati.

UTILIZZI DEL LINGUAGGIO XML Interscambio dati Definizione di altri linguaggi (metalinguaggio) Memorizzazione dati (attenzione alle limitazioni)

STRUTTURA DI UN DOCUMENTO XML Concretamente, un documento XML è un file di testo che contiene una serie di tag, attributi e testo secondo regole sintattiche ben definite. Un documento XML è intrinsecamente caratterizzato da una struttura gerarchica. Esso è composto da componenti denominati elementi. Ciascun elemento rappresenta un componente logico del documento e può contenere altri elementi (sottoelementi) o del testo. Gli elementi possono avere associate altre informazioni che ne descrivono le proprietà. Queste informazioni sono chiamate attributi.

STRUTTURA AD ALBERO L organizzazione degli elementi segue un ordine gerarchico (ad albero) che prevede un elemento principale, chiamato root element (obbligatorio).

SINTASSI DEL LINGUAGGIO La prima riga del documento lo identifica come un documento XML e ne specifica la versione A differenza dell HTML in cui i tag sono predefiniti, XML ci lascia liberi di definire i tag che vogliamo. Per specificare un attributo per un elemento inseriamo il nome dell attributo con il relativo valore all interno del tag di apertura dell elemento. L organizzazione gerarchica degli elementi viene rappresentata in XML tramite il loro annidamento. <?xml version="1.0" encoding="utf-8"?> <books LibraryName = "Cycling Library"> <book> <title> History of cycling </title> <author> Cadel Evans </author> <year>2010</year> </book> <book> <title> Cycling off road </title> <author> Diego Rosa </author> <year>2016</year> </book> </books>

DOCUMENTI BEN FORMATI Ogni documento XML deve contenere un unico elemento di massimo livello (root) che contenga tutti gli altri elementi del documento. Le sole parti di XML che possono stare all esterno di questo elemento sono i commenti e le direttive di elaborazione (per esempio, la dichiarazione della versione di XML) Ogni elemento deve avere un tag di chiusura o, se vuoti, possono prevedere la forma abbreviata (/>) Gli elementi devono essere opportunamente nidificati, cioè i tag di chiusura devono seguire l ordine inverso dei rispettivi tag di apertura XML fa distinzione tra maiuscole e minuscole, per cui i nomi dei tag e degli attributi devono coincidere nei tag di apertura e chiusura anche in relazione a questo aspetto I valori degli attributi (definiti all interno del tag di apertura dell elemento) devono sempre essere racchiusi tra singoli o doppi apici

CARATTERI VIETATI E REGOLE SINTATTICHE I nomi dei tag possono iniziare con un carattere alfabetico o con il simbolo _ I nomi dei tag non possono contenere spazi e caratteri speciali ad esclusione di _ -. I commenti sono racchiusi tra <! e --> I simboli chiave del linguaggio possono essere rappresentati mediante le seguenti entità

CDATA Per evitare che il contenuto di un tag sia analizzato e permettere quindi che al suo interno possa essere inserita qualsiasi sequenza di caratteri è possibile qualifcarlo come CDATA inserendolo tra i simboli <![CDATA[ e ]] <paragrafo> <![CDATA[Il tag <paragrafo> contiene questo paragrafo]]> </paragrafo> In questo modo la sequenza di caratteri <paragrafo> contenuta all interno della sezione CDATA non viene interpretata come tag

MANIPOLAZIONE DI FILE XML DA CODICE Storicamente l interazione con un documento XML da parte del codice di programmazione si basa su una delle due seguenti modalità fondamentali: SAX (Simple API for XML) DOM (Document Object Model)

SAX XML Permette di leggere e interpretare documenti XML utilizzando un sistema di Parsing basato sugli eventi SAX è basata sul concetto di evento associato al processo di parsing di un documento Ad esempio l apertura o chiusura di un tag La scelta del modello SAX è possibile solo qualora il documento debba essere letto, ma non manipolato

DOM XML Fornisce una rappresentazione dei documenti XML (secondo la corrispondente struttura ad albero) Incapsula ogni elemento caratteristico del linguaggio in un oggetto che ne fornisce interfaccia e manipolazione Permette di manipolare la struttura di un oggetto in un ottica object oriented

POSSIBILI MODIFICHE SU UN FILE XML Nel seguito indagheremo le seguenti operazioni implementate in liguaggio c# secondo un modello DOM Lettura Modifica Inserimento Cancellazione Le porzioni di codice che potremo manipolare sono: Valori Attributi

NAVIGAZIONE DEL FILE XML A PIÙ LIVELLI Descendants restituisce una raccolta di elementi discendenti (a qualsiasi livello) del nodo o del documento che richiama il metodo Elements restituisce una raccolta di elementi figli (di primo livello) del nodo o del documento che richiama il metodo Element Ottiene il primo (nell'ordine del documento) elemento figlio di primo livello Parent E una proprietà che restituisce l elemento padre dell elemento che la richiama

LETTURA E MODIFICA DI FILE XML IN C# Spazio dei nomi da importare System.Xml.Linq Contiene le classi per LINQ to XML fornendo un'interfaccia di programmazione XML in memoria (modello DOM XML) che consente di modificare documenti XML in modo semplice ed efficiente. <books LibraryName = "Cycling Library"> <book stock= 10 > <title> </title> <author> </author> <year> 2010 </year> </book> </books> History of cycling Cadel Evans XDocument doc = XDocument.Load(Server.MapPath("/App_Data/note.xml")); foreach (XElement n in doc.descendants("books")) } // mystock potrebbe essere null se l attributo fosse mancante string mystock = (string)n.attribute("stock"); foreach (XElement nn in n.elements( title")) string mytitle = (string)nn.value; nn.setvalue(mytitle + " cadel"); } n.setattributevalue(" stock", mytitle + " 0"); doc.save(server.mappath("/app_data/note.xml"));

ESERCIZIO Implementazione di una classe Note con i metodi Load (Read) Update Append Delete Esplorazione dei vari elementi del documento con i cicli

LETTURA E FILTRO DEI TAG public static List<Note> FindNoteByHeading(XDocument doc, string myheadingtofind) } List<Note> mylist = new List<Note>(); foreach(xelement elemento in doc.descendants("note")) foreach(xelement elemento2 in elemento.descendants("heading")) if(elemento2.value.tolower()== myheadingtofind.tolower()) mylist.add(new Note(elemento.Element("to").Value, elemento.element("from").value, elemento.element("body").value, elemento.element("heading").value)); } } return mylist; Il metodo esplora l albero dei tag XML con 2 cicli foreach, quando trova il nodo corretto crea una istanza di Note e la aggiunge alla lista. Il metodo così scritto potrebbe dare errori a runtime per riferimento a Null se non trova i sottotag di Note necessita di ulteriori controlli

OTTIMIZZAZIONE DEL CODICE: ESPRESSIONI LAMBDA public static List<Note> LoadNoteByHeading(XDocument doc, string myheadingtofind) List<Note> mylist = new List<Note>(); // Filtro con una sola istruzione i nodi che mi interesseno List<XElement> xnodelist = doc.descendants("note").where(x => x.element("heading").value == myheadingtofind).tolist(); } // Per ogni nodo filtrato creo un oggetto di tipo Note e lo aggiungo alla mia lista di note foreach(xelement elemento in xnodelist) mylist.add(new Note(elemento.Element("to").Value, elemento.element("from").value, elemento.element("body").value, elemento.element("heading").value)); return mylist; Utilizziamo la lambda expression in verde: passiamo il parametro x (tramite l operatore =>) elemento della lista restituita da Descendants alla funzione anonima che verifica la corrispondenza nel valore testuale del sottotag heading

SALVATAGGIO DI UN TAG public bool Append(XDocument doc, string urltosave) // Ottengo il nuovo id come il massimo tra gli id presenti + 1 (lamda expression) int newid = doc.descendants("note").max(x => Convert.ToInt32(x.Element("id").Value))+1; if (newid > 0) XElement newnode = new XElement("note"); newnode.add(new XElement("to")); newnode.element("to").value = To; // Inserisco gli altri sottotag a piacere doc.element("notes").add(newnode); doc.save(urltosave); return true; } return false; } Da una istanza della classe Note esistente, richiamo questo metodo per salvare la stessa istanza (con i relativi attributi) su XML come tag Note con i relativi sottotag.

SALVATAGGIO DI UN TAG CON + SOTTOTAG public bool addcommento(xdocument mydoc, string urltosave) XElement newcommento = new XElement("commento"); newcommento.add(new List<XElement>() new XElement("nome") Value = this.nome }, new XElement("cognome") Value = this.cognome }, new XElement("luogo") Value = this.luogo }, new XElement("testo") Value = this.commento }, new XElement("id") Value = this.id.tostring()}, new XElement("rating") Value = this.rating.tostring() } }); } mydoc.element("commenti").add(newcommento); mydoc.save(urltosave); return true; Posso sfruttare la sintassi compatta per aggiungere ad un elemento la lista di sottoelementi con una unica istruzione

CANCELLAZIONE DI UN TAG public bool deleterecensione(xdocument mydoc, string urltosave) List<XElement> mialista = mydoc.descendants("id").tolist(); XElement tagtofind = null; ; foreach (XElement x in mialista) if (x.value == this.id.tostring()) tagtofind = x; break; } } tagtofind.parent.remove(); mydoc.save(urltosave); return true; } Cancella l elemento in base all id come prima cosa trova con un ciclo l id corrispondente poi cancella l elemento l intero elemento padre. Ottimizzare la funzione con espressioni lamda

ESERCIZIO GUESTBOOK Implementare nell applicazione Guestbook il salvataggio di dati su file XML Partire dall esercizio Guesbook con repeater, stelline e paginazione 1. Creare il file guestbook.xml contenente almeno 3 recensioni 2. Effettuare la lettura dei dati da XML 3. Filtro delle recensioni in base al valore di un attributo 1. Tendina con nome, cognome, mail,rating 2. Ricerca la parola inserita (corrispondenza esatta o testo contenuto) 4. Inserimento di una nuova recensione anche nel file XML 5. Eliminazione di una recensione per idrecensione 6. Modifica per idrecensione dei campi nome, cognome, rating, commento