Verarbeitung von XML mit SAX und DOM



Ähnliche Dokumente
XML-Programmierschnittstellen: SAX, DOM

, Rainer Schmidberger, ISTE. XML und Java. Rainer Schmidberger

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: Datum:

1 Software Engineering 1

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

Algorithmen und Datenstrukturen II

XML-Technologien. XML-Parser. Florian Raith Hochschule München Fakultät für Informatik und Mathematik am 04. November 2010

Java: Kapitel 9. Java und XML. Programmentwicklung WS 2008/2009. Holger Röder

Java und XML 2. Java und XML

Programmieren II. Einführung in XML. Vorlesung 13. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010 XML JAXP SAX DOM

DOM Document Object Model

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Seminar: XML und Datenbanken

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

2.4 Analyse von XML-Dokumenten

IAWWeb PDFManager. - Kurzanleitung -

Java: Vererbung. Teil 3: super()

Webseiten sind keine Gemälde. Webstandards für ein besseres Web. Webstandards für ein besseres Web

Software Engineering Klassendiagramme Assoziationen

Technische Dokumentation SilentStatistikTool

2. XML 2.1 XML 1.0 und XML Schema. Jörg Schwenk Lehrstuhl für Netz- und Datensicherheit

XML-Namensräume. Marc Monecke

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

XML. extensible Markup Language. Dr. Beatrice Amrhein.

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

1. Einführung. Gliederung. Document Object Model (DOM) DOM Die Spezifikation (1) Level 2 HTML Specification. 1. Einführung. 2.

Vortrag im Rahmen des IFC-Seminars am Performance Messungen mit XML bei der empolis GmbH

XML. Arthur Zaczek. Nov /25

JavaScript in Drupal

... MathML XHTML RDF

SAX Simple API for XML

XSL Templates. Mit Templates arbeiten. XSL Templates

XINDICE. The Apache XML Project Name: J acqueline Langhorst blackyuriko@hotmail.de

XML. Arthur Zaczek. Nov 2015


Delegatesund Ereignisse

Grundlagen von Python

Simple API for XML (SAX) Ulrich Hoffmann

Innere Klassen in Java

Internet Explorer Version 6

Online-Publishing mit HTML und CSS für Einsteigerinnen

Universität Osnabrück Fachbereich Mathematik / Informatik 1. Übung Prof. Dr. rer. nat. Oliver Vornberger Nico Marniok, B. Sc. Erik Wittkorn, B. Sc.

XML und SOAP Einführung und Grundlagen

AJAX DRUPAL 7 AJAX FRAMEWORK. Was ist das Ajax Framework? Ein typischer Ablauf eines Ajax Requests Die Bestandteile des Ajax Frameworks.

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Erstellen einer PostScript-Datei unter Windows XP

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

X-Technologien. XML and Friends. Jörn Clausen 9. Juli 2001

Objektorientierte Programmierung

Arrays Fortgeschrittene Verwendung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

XMLBeam. Einfach XML-Handling. W3L AG

Programmierkurs Java

Factory Method (Virtual Constructor)

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Algorithmen und Datenstrukturen

Anleitung für IQES-Verantwortliche Persönliche Konten verwalten

XML-Parser. Parser. Heutige Vorlesung. Grundlegende Architektur. Kategorien von Parser

Kurzanweisung für Google Analytics

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Objektorientierte Programmierung

COSIDNS 2 ISPconfig3. Version 0.1 ( )

Erstellen einer in OWA (Outlook Web App)

Windows 7: Neue Funktionen im praktischen Einsatz - Die neue Taskleiste nutzen

Anleitung zum LPI ATP Portal

XML Extensible Markup Language

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Schriftarten-Verwaltung. Craig Drummond Übersetzung: Stephan Johach

web: CAD/CAM-Systeme Entwicklung Beratung Vertrieb Kundenbetreuung Service für Werkzeugmaschinen

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Klaus Schild, XML Clearinghouse Verarbeitung von XML- Dokumenten

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

Leichte-Sprache-Bilder

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Adminer: Installationsanleitung

Applet Firewall und Freigabe der Objekte

Registrierung am Elterninformationssysytem: ClaXss Infoline

Kurzanleitung OOVS. Reseller Interface. Allgemein

Benutzerverwaltung Business- & Company-Paket

Programmieren I. Strategie zum Entwurf von Klassen. Beispiele. Design von Klassen. Dr. Klaus Höppner. Beispiel: Bibliothek

Applets I. Grundlagen der g Applet-Programmierung

1. Bearbeite Host Netzgruppen

Institut für Programmierung und Reaktive Systeme 25. August Programmier-Labor Übungsblatt. int binarysearch(int[] a, int x),

Einführung in die Java- Programmierung

Objektorientierte Programmierung. Kapitel 12: Interfaces

AK Medientechnologien 05 Delegation

Melde- und Veröffentlichungsplattform Portal (MVP Portal) Hochladen einer XML-Datei

Individuelle Erweiterung des generierten Codes. 16. Januar 2013

Kurzanleitung zu XML2DB

Projekt AGB-10 Fremdprojektanalyse

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version Deutsch

JAVA/XML Das bhv Taschenbuch

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Transkript:

Verarbeitung von XML mit SAX und DOM Sven Peters Seminar Dokumentenverarbeitung Typeset by FoilTEX

Urspünglich nur für Java SAX Simple Api for XML Peter Murray-Rust (Jumbo XML Browser) - YAXPAPI (Yet Another XML Parser API) Zusammen mit Tim Bray (Lark XML parser) und David Megginson (Ælfred XML parser) Diskussion XML-DEV Erster Entwurf: 12. Januar 1998 SAX 1.0: 11. Mai 1998 Heute: SAX 2.0.1 seit 29. Januar 2002 1

Bekannte Parser SAX ist kein XML-Parser sondern eine standardisierte Schnittstelle für solche! Bekannte Parser: Ælfred2 (GNU) Crimson (Enthalten im JDK1.4, vom Apache-Projekt) Xerces (Teil des Apache-Projekts) XP 0.5 (James Clark, einer der ersten XML-Parser in Java, veraltet) 2

Events SAX basiert auf Ereignissen (Events) Der Parser sendet Events an registrierte Eventhandler Mögliche Ereignisse: start document start element characters end element end document 3

Parameter der Ereignisse: start document und end document sind parameterlos start element: URI lokaler Name qualifizierter Name Liste von Attributen end element: wie start element, jedoch ohne Attribute characters: Ein Array von Zeichen sowie Startindex und Länge der gültigen Zeichen des Arrays 4

Parsingfehler Fehler beim parsen werden als Events an den Errorhandler gesendet: error Alle Fehler, die das Parsen nicht weiter behindern, z.b. Verstöße gegen die DTD fatalerror Fehler, die ein weiteres Parsen verhindern, z.b. Dokument nicht wohlgeformt warning sonstiges 5

Parser instanzieren Defaultparser instanziieren: XMLReader xr = XMLReaderFactory.createXMLReader(); Defaultparser selber setzten beim Aufruf von Java: java -Dorg.xml.sax.driver=org.apache.xerces.parsers.SAXParser... Einen bestimmten Parser direkt instanziieren: XMLReader xr = new gnu.xml.aelfred2.xmlreader(); 6

Handler registrieren public class MyHandler extends DefaultHandler { public void startdocument () { System.out.println("Start Dokument"); } public void enddocument () { System.out.println("Ende Dokument"); } public void startelement(string uri, String name, String qname, Attributes atts) { System.out.println("Start Element: " + qname) } public void endelement(string uri, String name, String qname) { System.out.println("Ende Element: " + qname); } } 7

Characters public void characters (char ch[], int start, int length) { System.out.print("Characters: \""); for (int i = start; i < start + length; i++) { switch (ch[i]) { case \\ : System.out.print("\\\\"); break; case " : System.out.print("\\\""); break; case \n : System.out.print("\\n"); break; case \r : System.out.print("\\r"); break; case \t : System.out.print("\\t"); break; default: System.out.print(ch[i]); break; } } System.out.print("\"\n"); } 8

Beispiel XML Datei <?xml version="1.0"?> <collection> <cd year="1973"> <artist>queen</artist> <title>queen</title> <song>keep Yourself Alive</song> <song>doing All Right</song> <song>great King Rat</song> <song>my Fairy King</song> <song>liar</song> <song>the Night Comes Down</song> <song>modern Times Rock n Roll</song> <song>son And Daughter</song> <song>jesus</song> </cd> </collection> 9

SAX-Parser starten XMLReader xr = XMLReaderFactory.createXMLReader(); MyHandler mh = new MyHandler(); xr.setcontenthandler(mh); String dateiname = Buch.xml ; FileReader fr = new FileReader(dateiname); InputSource is = new InputSource(fr); xr.parse(is); 10

Ausgabe Start document Start element: collection Characters: "\n" Start element: cd Characters: "\n" Start element: artist Characters: "Queen" End element: artist Characters: "\n" Start element: title Characters: "Queen" End element: title Characters: "\n" Start element: song Characters: "Keep Yourself Alive" End element: song Characters: "\n"... Start element: song Characters: "Jesus" End element: song Characters: "\n" End element: cd Characters: "\n" End element: collection End document 11

DOM W3C Document Object Model Offizielle Bindungen für Java und ECMAScript Spezifikationen in Levels Level 1 Navigation und Manipulation innerhalb eines Dokuments (seit Oktober 1998) Level 2 Namespaces, CSS, Events (seit November 2000) Level 3 Laden und Speichern, XPath (noch in Entwicklung) 12

Aufbau Das gesamte XML-Dokument wird durch das Interface Document repräsentiert es enthält den Wurzel-Knoten des Dokuments (getdocumentelement) falls vorhanden die DTD (getdoctype) Methoden um Knoten nach ID oder Namen zu suchen (getelementbyid, getelementsbytagname) Methoden zum erzeugen neuer Knoten(create...) 13

Knoten Knoten sind immer einem bestimmen Dokument zugeordnet, sie können nicht alleine existieren ein Knoten bietet Methoden zur Bewegung in die Tiefe, Zugriff auf Kindknoten (childnode) Zur Seite, Zugriff auf Geschwisterknoten (siblingnode) nach Oben, Zugriff auf Elternknoten (parentnode) Hinzufügen und Entfernen von Kindknoten (childnode) wichtige Knoten: Element und Text 14

Elementknoten Elementknoten (im Beispiel: collection, cd, artist, title, song) Wie Knoten, zusätzlich Methoden zur Verwaltung von Attributen: erzeugen und schreiben (setattribute) löschen (removeattribute) lesen (getattribute) 15

Textknoten Textknoten repräsentieren jegliche Art von Text, der nicht zum Markup gehört Textknoten haben normalerweise keine Kinder Nebeneinanderliegende Textknoten können zusammengefaßt werden (Normalisierung) Methoden getdata und setdata für Zugriff auf den eigentlichen Text 16

DOM-Baum 17

Beispiel für DOM Ausgabe aller Songs DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newdocumentbuilder(); Document document = builder.parse(newfile(filename)); NodeList nodelist = document.getelementsbytagname("song"); for (int i = 0; i <nodelist.getlength(); i++) { Node songnode = nodelist.item(i); Node childnode = songnode.getfirstchild(); if ((childnode!= null) && (childnode.getnodetype() == Node.TEXT NODE)) { Text textnode = (Text) childnode; System.out.println(textNode.getData()); } } 18

DOM oder SAX? DOM und SAX sind weitgehend komplementär, d.h. des einen Vorteile sind meist des anderen Nachteile Vorteile von SAX geringer Speicherbedarf einfache API Vorteile von DOM Baumstruktur bleibt erhalten Direkte Manipulation möglich 19

SAX oder DOM? SAX bietet sich an, wenn nur Teile des XML-Dokumentes gebraucht werden XML-Daten sowieso auf interne Datenstrukuren abgebildet werden der Datenumfang für DOM einfach zu groß ist Streaming 20

DOM bietet sich an, wenn SAX oder DOM? die native Datenstruktur XML ist umfangreiche Transformationen nötig sind flexible Manipulationen für Außenstehende möglich sein sollen (z.b. per JavaScript) zur Verarbeitung von Vorlagen(Templates) 21