Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser...

6
Laboratorio di Servizi We b - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno di utilizzare metodi indiretti (come eventi di SAX parser) non permettono manipolazione diretta del documento introdotte rappresentazioni strutturate che permettono di analizzare e modificare contenuto di documento W3C ha definito specifiche di rappresentazione strutturata di documento XML Documenti XML sono gerarchici (tag annidati) rappresentazione ad albero Elementi, attributi, etc. rappresentati come nodi di albero

Transcript of Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser...

Page 1: Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.

Laboratorio di Servizi Web - XML - Ardissono

1

Rappresentazione ad oggetti di documenti XML

• Parser fanno analisi sintattica di documento XML ma, a meno di utilizzare metodi indiretti (come eventi di SAX parser) non permettono manipolazione diretta del documento

introdotte rappresentazioni strutturate che permettono di analizzare e modificare contenuto di documento

• W3C ha definito specifiche di rappresentazione strutturata di documento XML

– Documenti XML sono gerarchici (tag annidati) rappresentazione ad albero

– Elementi, attributi, etc. rappresentati come nodi di albero

Page 2: Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.

Laboratorio di Servizi Web - XML - Ardissono

2

DOM - Document Object Model - I

• W3C standard per gestione di documenti XML– rappresenta i documenti con un modello ad oggetti

– specifica interfaccia per accedere a parti di documenti e “navigarli”

– rappresentazione DOM si basa su struttura ad albero

<pizza> <topping> peperoni </topping> <price> 8.00 </price> <size> large </size></pizza>

Document

pizza

topping price size

Root element

Child elements

Page 3: Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.

Laboratorio di Servizi Web - XML - Ardissono

3

DOM - Document Object Model - II• Molti parser sono conformi a DOM (es. JAXP) usano

rappresentazione DOM per gestire documenti • DOM interfaccia produttori di parser hanno

sviluppato implementazioni• org.w3c.dom• DOM usa interfaccia Node (e più specifici, come

Element), che rappresenta i nodi dell’albero di un documento e offre metodi per:– trovare i nodi figli di un nodo– aggiungere figli ad un nodo– leggere il valore contenuto in un nodo, ...

• documento si ispeziona (e modifica) navigando albero a partire da radice

Vedere Tutorial (JAXP) per maggiori

informazionisu DOM

Page 4: Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.

Laboratorio di Servizi Web - XML - Ardissono

4

Creazione di DOM• dal nulla, creando i nodi e inserendoli nell’albero• parsificando documento XML (e.g., via SAX parser)

import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.FactoryConfigurationError; import javax.xml.parsers.ParserConfigurationException;import org.xml.sax.SAXException; import org.xml.sax.SAXParseException; import org.w3c.dom.Document; import org.w3c.dom.DOMException; ...

public class DomEcho01{ static Document document; public static void main(String argv[]) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(true); try {DocumentBuilder builder = factory.newDocumentBuilder(); document = builder.parse( “coffee.xml” ); } catch (SAXParseException spe) {System.out.println("\n** Parsing error”); ….. Gestione di altre eccezioni... } }

Page 5: Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.

Laboratorio di Servizi Web - XML - Ardissono

5

Visita di oggetto DOM public static void visitDocument(Document document, String feature) { if (document!=null) { Element el = document.getDocumentElement(); visit(el, feature);}} public static void visit(Node el, String feature) { if (el!=null) { NodeList children = el.getChildNodes();

for (int i=0; i<children.getLength(); i++) {Node n=children.item(i);getFeatureVal(n, feature);visit(children.item(i), feature);}}}

public static void getFeatureVal(Node domNode, String feature) { String out = ""; if (domNode!=null) {

String name = domNode.getNodeName(); String type = typeName[domNode.getNodeType()];

if (name.equals(feature)) { Element el = (Element)domNode;

out = el.getFirstChild().getNodeValue(); System.out.println("The value of feature "+feature+ " is: " +out);} }}

Page 6: Laboratorio di Servizi Web - XML - Ardissono 1 Rappresentazione ad oggetti di documenti XML Parser fanno analisi sintattica di documento XML ma, a meno.

Laboratorio di Servizi Web - XML - Ardissono

6

DOM vs. JDOM e altri….

• DOM nato per trattare documenti – document-oriented, focalizzato sulle parti di cui un

documento si compone– gestione di strutture dati possibile, ma un po’ ostica sviluppati altri modelli di rappresentazione che facilitano

accesso e modifica. Es: JDOM, DOM4J

• Trascuriamo DOM, JDOM, etc. per focalizzarci su uno strumento recente, più efficace nel trattamento di strutture dati: JAXB

• JAXB (Java Architecture for XML Binding) nato apposta per trattare rappresentazione XML di strutture dati