La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Scrittura di XML Lezione 16 Programmazione per la Musica | Prof. Luca A. Ludovico.

Presentazioni simili


Presentazione sul tema: "Scrittura di XML Lezione 16 Programmazione per la Musica | Prof. Luca A. Ludovico."— Transcript della presentazione:

1 Scrittura di XML Lezione 16 Programmazione per la Musica | Prof. Luca A. Ludovico

2 Scrittura di XML Obiettivo della lezione è aggiungere nodi a un documento XML esistente o creare un documento ex- novo. L’approccio è quello di XML DOM, in cui le gerarchie di un documento XML vengono rappresentate come un albero di nodi, e ogni aspetto dell’XML (compresi i commenti) è l’istanza di un nodo. Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML

3 Come accedere a un documento XML Primo obiettivo: aggiungere nodi a XML esistente. Esattamente come per la lettura di XML, è necessario innanzi tutto giungere all’istanza di un oggetto dell’interfaccia Document. Passaggi: 1.istanziare un oggetto DocumentBuilderFactory 2.istanziare un oggetto DocumentBuilder 3.ottenere un oggetto Document dal parsing di un file in formato XML Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML

4 Caricamento di file con DOM DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); // opzionale try { DocumentBuilder builder = factory.newDocumentBuilder(); File file = new File("test.xml"); Document doc = builder.parse(file); // Do something with the document here } catch (ParserConfigurationException | SAXException | IOException e) { // Manage exception (multi-catch) } Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML Il costruttore è dichiarato protected, quindi non è richiamabile direttamente. Per istanziare è necessario invocare il metodo newInstance() Il costruttore è dichiarato protected, quindi non è richiamabile direttamente. Per istanziare è necessario invocare il metodo newDocumentBuilder()    

5 Metodi di Document per la creazione di nodi Metodi principali: –Attr createAttribute(String name) crea un Attr del nome specificato. –CDATASection createCDATASection(String data) crea un nodo CDATASection il cui valore è quello della stringa. –Comment createComment(String data) crea un nodo Comment il cui valore è la stringa in ingresso. –DocumentFragment createDocumentFragment() crea un oggetto DocumentFragment vuoto. –Element createElement(String tagName) crea un nodo Element. –Text createTextNode(String data) crea un nodo Text contenente la stringa specificata. Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML

6 Aggiungere i nodi a Document Una volta creato un nodo, è necessario inserirlo nella gerarchia XML nel punto corretto. Il metodo principale per farlo è invocare appendChild(Node n) sul nodo cui deve essere “appeso” il nuovo nodo Per quanto riguarda gli attributi, è possibile aggiungerli all’elemento invocando sul nodo Element di quest’ultimo il metodo void setAttribute(String name, String value) Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML

7 Salvare XML su file Result output = new StreamResult( new File("E:/nuova_prova.xml")); Source input = new DOMSource(doc); TransformerFactory tf = TransformerFactory.newInstance(); Transformer t = tf.newTransformer(); // opzioni per l’indentazione t.setOutputProperty(OutputKeys.INDENT, "yes"); t.setOutputProperty("{http://xml.apache.org/xslt}indent- amount", "3"); t.transform(input, output); Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML

8 Creare un nuovo documento da zero Primo problema: creare il nodo radice DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.newDocument(); // radice Successivamente, è possibile creare i singoli nodi e aggiungerli alla gerarchia come visto precedentemente. Piè di pagina: spazio libero per eventuale nome struttura o altro

9 ESEMPI CreateNodes.java Il software effettua operazioni basilari di creazione di elementi, attributi e commenti ed esemplifica l’aggiunta di nodi a una gerarchia pre-esistente. SaveMelody.java Questo esempio crea un documento XML ex-novo, effettuando il parsing di una struttura dati interna che descrive una melodia come successione di note. La scelta del formato XML è del tutto arbitraria e non aderisce ad alcun formato standardizzato. Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML

10 ESERCIZIO Si crei via codice lo scheletro di un file IEEE 1599 valido, ossia: Programmazione per la Musica - Prof. Luca A. Ludovico 16. Scrittura di XML


Scaricare ppt "Scrittura di XML Lezione 16 Programmazione per la Musica | Prof. Luca A. Ludovico."

Presentazioni simili


Annunci Google