P A X P A X. Power API for XML. DOM und SAX. PAX : Ideen und Konzepte. Wie PAX funktioniert. Wie PAX angewandt wird. WWW-Links. von Manfred Duchrow

Ähnliche Dokumente
2.4 Analyse von XML-Dokumenten

Seminar: XML und Datenbanken

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

Web (Site) Engineering (WebSE)

Schlussendlich geben wir die Listen aus. Es kommt zu folgender Ausgabe:

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung

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

Verarbeitung von XML mit SAX und DOM

Klaus Schild, XML Clearinghouse Verarbeitung von XML- Dokumenten

12 Abstrakte Klassen, finale Klassen und Interfaces

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Informatik II Übung 06. Benjamin Hepp 5 April 2017

Institut für Programmierung und Reaktive Systeme. Java 7. Markus Reschke

1 Software Engineering 1

Programmierkurs Java

Programmierung Nachklausurtutorium

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

Simple API for XML (SAX) Ulrich Hoffmann

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Verarbeitung von XML- Dokumenten

Programmierkurs C++ Abstrakte Klassen und Methoden

Creational Patterns. Seminar Software-Entwurf. Thomas Liro WS 2004/05.

Vorkurs Informatik WiSe 15/16

OOP. Tagesprogramm. Software-Entwurfsmuster. Factory-Method. Prototype

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Java und XML 2. Java und XML

Klausur: Programiermethoden und Techniken

XML. Arthur Zaczek. Nov 2015

XML. Arthur Zaczek. Nov /25

Einstieg in die Informatik mit Java

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 14.1.

Objektorientierte und Funktionale Programmierung SS 2014

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

5 XML und Analyse von XML-Dokumenten

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

Prinzipien der objektorientierten Programmierung (OOP)

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

SAX. (Simple. Application Programming Interface for XML)

Java für Bauingenieure

Entwurfsmuster (Design Patterns)

14 Abstrakte Klassen, finale Klassen, Interfaces

Einstieg in die Informatik mit Java

Wiederholung. Klassenhierarchie:

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

XML - Datei Zugriff mit Java

Vererbung, Polymorphie

14 Abstrakte Klassen, finale Klassen, Interfaces

Erzeugungsmuster. Kapselung der Objekt-Erzeugung

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

Java Einführung Vererbung und Polymorphie. Kapitel 13

XML-Programmierschnittstellen: SAX, DOM

Innere Klassen. Innere Klassen. Page 1. Lernziele: innere Klassen, statische geschachtelte Klassen, anonyme Klassen.

Software Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter

1 Abstrakte Klassen, finale Klassen und Interfaces

Objektorientierte PL/SQL-Entwicklung Ein Erfahrungsbericht aus Sicht von JAVA-Entwicklern

DOM Document Object Model

Software Entwicklung 1

Die abstrakte Klasse Expression:

Einstieg in die Informatik mit Java

XML, FI und JSON strukturiert in Java verwenden. Wolfgang Nast

Informatik II Übung 6

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Begriffe 1 (Wiederholung)

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

Realisierungsmöglichkeiten für parametrische Polymorphie

ALP II Dynamische Datenmengen Datenabstraktion

Java: Vererbung. Teil 3: super()

Kapitel 5: Interfaces

Programmieren in Java -Eingangstest-

Tutorial zu Einführung in die Informatik für LogWi- Ings und WiMas Wintersemester 2015/16. 1 Zauberer und Zwerge, Aufgabenteil 1

Einführung in die Programmierung

Javakurs für Anfänger

Software-Entwurfsmuster (weitere) A01 OOP. Software-Entwurfsmuster (weitere)

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Design Patterns. 3. Juni 2015

185.A Software-Entwurfsmuster 1 OOP. Software-Entwurfsmuster

Informatik II Übung 6 Gruppe 7

Factory Method (Virtual Constructor)

Programmieren 1 09 Vererbung und Polymorphie

Javakurs für Anfänger

Programmierkurs Python I

9. Vererbung Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

Javakurs für Anfänger

JTable. W. Lang HWR Berlin, SS

Java Einführung Abstrakte Klassen und Interfaces

Einstieg in die Informatik mit Java

II.4.2 Abstrakte Klassen und Interfaces - 1 -

Grundzüge der Programmierung. Wiederverwendung VERERBUNG

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

Programmieren in Java

Programmieren 2 Java Überblick

CARL HANSER VERLAG. Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis

Zweck: sequentieller Zugriff auf Elemente eines Aggregats. mehrere Abarbeitungen des Aggregatinhalts

Transkript:

P A X Power API for XML von Manfred Duchrow P A X DOM und SAX : Ideen und Konzepte Wie funktioniert Wie angewandt wird WWW-Links 2 1

DOM (Document Object Model) Document Element Element Text Attribute Text 3 DOM: Pro und Contra Pro Sehr leicht zu verwenden Sehr gut um XML-Strukturen zu erzeugen Contra Der Parser liest immer das gesamte XML- Dokument ein Das Ergebnis des eingelesenen XML- Dokuments ist ein Baum aus generischen Objekten und kein Netz aus Geschäftsobjekten 4 2

SAX (Simple API for XML) XML Dokument SAX- Parser DocumentHandler <?xml version= 1.0?>... <Title> Design Patterns </Title>... startdocument() startelement() characters() endelement() enddocument() 5 SAX: Pro und Contra Pro Sehr einfach Arbeitet mit Ereignissen, was die Extraktion von Teilen eines XML-Dokumentes erleichtert Contra Überlässt dem Programmierer die meiste Arbeit ( DocumentHandler - Implementierung ) Die Erzeugung von XML-Dokumenten wird nicht unterstützt. 6 3

Baut auf SAX auf, d.h. es läuft mit jeder SAX- Parser Implementierung Unterstützt die direkte Erzeugung von Geschäftsobjekten aus XML-Daten Ist eher ein Framework als eine Schnittstelle Reduziert den Programmieraufwand Führt zu besser wartbarem Code 7 Die Grundidee von Jedes XML-Tag soll von einer eigenen Klasse ausgewertet werden Unterstützung direkter Erzeugung von Geschäftsobjekten aus XML-Daten Berücksichtigung der hierarchischen Strukturen von XML-Dokumenten Reduzierung des Programmieraufwandes Es sollte immer noch leicht verständlich sein 8 4

- Komponenten Tag interpreter abstract class BaseXMLTagInterpreter Tag interpreter controller abstract class BaseXMLTagInterpreterController Tag interpreter factory abstract class BaseXMLTagInterpreterFactory 9 Randbedingungen von SAX Ein SAX-Parser kennt immer nur eine Instanz eines DocumentHandlers Der dem SAX-Parser bekannte DocumentHandler kann während des Parsens eines XML-Dokuments ausgetauscht werden 10 5

- Funktionsweise Zuerst wird ein XMLTagInterpreterController als DocumentHandler dem SAX-Parser zugewiesen Dann setzt dieser Controller den jeweils einem beim Parsen auftretenden XML-Tag zugeordneten XMLTagInterpreter als DocumentHandler ein Eine XMLTagInterpreterFactory liefert die XMLTagInterpreter Instanzen zu den XML-Tags Der Controller verwaltet den Stack der Tag-Interpreter Das ezeugte Geschäftsobjekt eines Tag-Interpreters wird an den übergeordneten Tag-Interpreter weitergereicht, um dort in das entstehende Objekt eingefügt zu werden 11 Schritt für Schritt Es ist sinnvoll eine Klasse anzulegen, die alle Konstanten (Tag-Namen, Attribut-Namen etc.) enthält Für jedes vorkommende Tag eine Unterklasse von BaseXMLTagInterpreter anlegen Eine Unterklasse von BaseXMLTagInterpreterFactory erstellen, die für jedes XML-Tag den entsprechenden Tag- Interpreter liefert Eine Unterklasse von BaseXMLTagInterpreterController anlegen 12 6

Funktionsweise - XMLTagInterpreter Jede Unterklasse von BaseXMLTagInterpreter muss die folgenden Methoden implementieren: public String gettagname() Liefert den Namen des Tags für das der Interpreter zuständig ist public void start( String elementname, AttributeList attributes ) Wird aufgerufen, wenn das zugeh. Tag gefunden wurde und der Interpreter die Auswertung der eingelesenen Daten beginnen soll public void restart( String subtagname, Object subresult ) Wird aufgerufen, wenn ein Interpreter wieder die Kontrolle übernimmt nachdem ein untergeordnetes Tag ausgewertet wurde public Object getresult() Liefert das aus den XML-Daten erzeugte Objekt 13 Funktionsweise - XMLTagInterpreterFactory Eine Unterklasse BaseXMLTagInterpreterFactory sollte alle verfügbaren Tag-Interpreter-Klassen registrieren: public class MyFactory extends BaseXMLTagInterpreterFactory { public MyFactory() { super() ; registertaginterpreter( Booklist, com.libri.xml.booklistinterpreter ); registertaginterpreter( Book, com.libri.xml.bookinterpreter ); registertaginterpreter( Title, com.libri.xml.titleinterpreter ); } } 14 7

Funktionsweise - XMLTagInterpreterController Eine Unterklasse von BaseXMLTagInterpreterController muss die folgenden Methoden implementieren: protected void handlefinalresult(object result) Diese methode wird aufgerufen, nachdem das letzte Ende-Tag eines XML-Dokumentes interpretiert wurde. Sie erhält das Ergebnis-Objekt des letzten Tag-Interpreters. protected XMLTagInterpreterFactory createtaginterpreterfactory() Wird vom Constructor aufgerufen, um die Variable interpreterfactory zu initialisieren. 15 Ausführung Beispiel:... parser = new SAXParser() ; controller = new MyPaxController( parser ) ; parser.parse( filename ) ; result = controller.getresult() ;... 16 8

Links Daedalos Download Seite für http://www.daedalos.de/de/download/pax/ W3C - DOM Specification http://www.w3.org/tr/rec-dom-level-1/ http://www.w3.org/tr/dom-level-2/ SAX Specification http://www.megginson.com/sax/sax.html http://www.megginson.com/sax/sax2/ 17 Kontakt Daedalos Consulting GmbH Ruhrtal 5 D-58456 Witten Germany Tel.: +49 (0)2302 979-0 Fax: +49 (0)2302 979-199 E-Mail: info@daedalos.com Web: http://www.daedalos.com 18 9