2.4 Analyse von XML-Dokumenten

Ähnliche Dokumente
Seminar: XML und Datenbanken

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

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

XML. Arthur Zaczek. Nov /25

1 Software Engineering 1

XML. Arthur Zaczek. Nov 2015

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

SAX Simple API for XML

Anbindung von XML an OOP

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

XML. extensible Markup Language. Dr. Beatrice Amrhein.

Simple API for XML (SAX) Ulrich Hoffmann

Verarbeitung von XML mit SAX und DOM

5 XML und Analyse von XML-Dokumenten

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

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

Web (Site) Engineering (WebSE)

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB

XML-Programmierschnittstellen: SAX, DOM

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

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

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

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

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

XML. Einführung, XML-Grundlagen und -Konzepte. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML. Einführung, XML-Grundlagen und -Konzepte. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

Kapitel 3. XML-Prozessoren. Document Object Model Simple API for XML DOM SAX

Klaus Schild, XML Clearinghouse Verarbeitung von XML- Dokumenten

5.5. Document Object Model - DOM. Überblick DOM DOM und JAXP Node-Interface Einige Subinterfaces von Node Weitere Interfaces

PROG 2: Einführung in die Programmierung für Wirtschaftsinformatiker

Java und XML. Praktikum aus Softwareentwicklung 2. Java Praktikum SS 2010

Verarbeitung von XML- Dokumenten

Programmieren II XML. Heusch -- Ratz -- Institut für Angewandte Informatik. KIT Die Forschungsuniversität in der Helmholtz-Gemeinschaft

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

Algorithmen und Datenstrukturen II

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

Einführung in Perl. WWW, Teil 2: XML

Programmieren II. Arbeiten mit XML-Dokumenten. Institut für Angewandte Informatik

Vor allem in Internetanwendungen erfreut sich xml großer Akzeptanz XML ist heute eine universelle Datenbeschreibungssprache Validierend mit

Semistrukturierte Daten. Teil 5: Java API for XML Processing

XML Extensible Markup Language

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

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Programmieren 2 Java Überblick

Inhalt. Parser-Modelle. Aufgaben eines XML-Prozessors. XML-APIs und Java. Idee eines XML-Prozessors (Parsers) VU Semistrukturierte Daten 2

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

JAVA/XML Das bhv Taschenbuch

Softwaretechnik 2 - XML -

Berner Fachhochschule Software Schule Schweiz JDOM. Beatrice Amrhein. Oktober 06

XML-Parser K. Schild, 2006 / M. Mochol

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

VU Semistrukturierte Daten 2

XML APIs allgemein. XML APIs, DOM und SAX. Erinnerung. Ansprüche an XML APIs. Welche Möglichkeiten bestehen? Vor- und Nachteile

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

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

Programmieren II XML. Heusch -- Ratz -- Institut für Angewandte Informatik

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

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

XML und SOAP Einführung und Grundlagen

XML-Verarbeitung (VER) Lernziele

XML - Datei Zugriff mit Java

Praktikum aus Softwareentwicklung 2. Java und XML. Java Praktikum SS 2008

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

Semistrukturierte Daten

Programmierung mit XML

Synchronisation auf XML-Dokumenten

Java und XML 2. Java und XML

XML und.net. Proseminar Objektorientiertes Programmieren mit.net und C# Tuan Duc Nguyen. Institut für Informatik Software & Systems Engineering

Softwareentwicklung mit Komponenten

SAX. (Simple. Application Programming Interface for XML)

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

12 Abstrakte Klassen, finale Klassen und Interfaces

Programmierkurs Python I

Wirtschaftsinformatik (PWIN) 5. Mentorium. Wirtschaftsinformatik (PWIN), SS2010, Professur für Mobile Business & Multilateral Security 1

XML Extensible Markup Language

XML-Verarbeitung mit Java

Analyse und Modellierung von Informationssystemen

XML-Parser. Markus Luczak-Rösch Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

Document Type Definitions (DTDs)

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

Einführung in XML. Seminarunterlage. Version 3.05 vom

11 XML Programmierung

ebusiness Übung 3a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

XML-Parser. Markus Luczak-Rösch Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

Programmieren II XML. Heusch -- Ratz -- Institut für Angewandte Informatik

Service Engineering. Übung 2a Spezifikation und Nutzung von Web-APIs (Services) Prof. Dr. Andreas Schmietendorf 1

Komponenten-basierte Entwicklung Teil 2: Einführung in XML

SAX. Seminararbeit im Seminar XML und Datenbanken Sommersemester 2004 Universität Jena. vorgelegt von Stefan Scheidewig

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Programmierung 2. Übersetzer: Das Frontend. Sebastian Hack. Klaas Boesche. Sommersemester

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

XML. XML: Extensible Markup Language. Vorlesung und Übung Universität Paderborn Wintersemester 2016/2017 Dr. Peter Pfahler

Tutorial zu Kapitel WT:III

XML Parser. Ein Überblick XML UND JAVA. In diesem Kapitel Einleitung Streams und Readers

Klausur: Programiermethoden und Techniken

Transkript:

2.4 Analyse von XML-Dokumenten Die EXtensible Markup Language ist eine formale Beschreibungssprache für hierarchisch strukturierte Daten. Einführung in die Spezifikation von XML: Auszug aus der kf. Grammatik von XML: document ::= prolog element Misc* prolog ::= XMLDecl? Misc* (doctypedecl Misc*)? XMLDecl ::= '<?xml' VersionInfo EncodingDecl? SDDecl? S? '?>' VersionInfo ::=... Misc ::= Comment PI S doctypedecl ::= '<!DOCTYPE' S Name ( S ExternalID)? S? ('[' ([ intsubset ']' S?)? S) '>' element ::= EmptyElemTag STag content ETag EmptyElemTag ::= '<' Name (S Attribute)* S? '/> ' STag ::= '<' Name (S Attribute)* S? '>' Attribute ::= Name Eq AttValue... Nichtterminal S bezeichnet Whitespace. 181

Beispiel: (XML-Dokument) Folgendes Beispiel stammt von www.onjava.com <?xml version="1.0"?> <!DOCTYPE catalog> <catalog library="somewhere"> <book> <author>author 1</author> <title>title 1</title> </book> <book> <author>author 2</author> <title>his One Book</title> </book> <magazine> <name>mag Title 1</name> <article page="5"> <headline>some Headline</headline> </article> <article page="9"> <headline>another Headline</headline> </article> </magazine> </catalog> 182

Aufgaben der Analyse von XML: Zentrale Aufgaben sind: lexikalische und kontextfreie Analyse Prüfen der Wohlgeformtheitsregeln, z.b.: - richtige Schachtelung ht der Elemente durch Start- und Endetags - Eindeutigkeit von Attributnamen - Definiertheit von Entitätsreferenzen - usw. Prüfen der Gültigkeit bzgl. Regeln der DTD oder des XML-Schemas. Vergleich zur Analyse von Programmen: Einfache kontextfreie Analyse Einfache Namensanalyse Keine Typinferenz Gültigskeitsregeln können vom Dokument selbst definiert oder importiert werden. Abschätzung der Dokumentgröße schwierig; Dokumente können sehr groß sein. Meist sehr hohe Effizienz wichtig. 183

Parsen von XML-Dokumenten: Zwei standardisierte Techniken zur Anbindung des XML-Frontends/Parsers an die Anwendung: SAX - Simple API for XML Parsing: Registrieren eines Beobachters beim Parser Parser schickt Ereignisse an Beobachter, z.b. bei Start und Ende eines Elements Beobachter liefert Daten für die Anwendung Vorteile: - Dokumente müssen nie vollständig als Datenstruktur aufgebaut werden: problemlose Behandlung großer Dokumente - einfach und sehr effizient zu benutzen Nachteile: - Benutzer muss Datenstruktur zur Repräsentation des Dokuments selbst definieren. - Baumaufbau ist selbst zu programmieren. 184

DOM - Document Object Model: Baut einen Syntaxbaum auf, der alle Informa- tionen des Eingabedokuments in einer allgemeinen Datenstruktur verfügbar macht. Allgemeine Datenstruktur sollte ggf. in Datenstruktur transformiert werden, die den spezifischen Anforderungen der Anwendung gerecht wird. Vorteile: - Automatischer Aufbau einer standardisierten Datenstruktur. - ohne Weiteres zu benutzen Nachteile: - Entstehung einer aufwendigen Repräsentation, die möglicher Weise viele Aspektes enthält, die für aktuelles Dokument unwichtig sind. - Oft Anpassung an spezielle Dokumentstruktur notwendig - speicheraufwendig und bei großen Dokumenten nur bedingt einsatzfähig und langsam. 185

Parsen mit JAXP: SAX-Parser Beobachter des Parsers müssen die Schnittstelle org.xml.sax.contenthandler implementieren. Die Klasse org.xml.sax.helpers.defaulthandler enthält für alle Methoden von ContentHandler eine triviale Implementierung, so dass deren Subklassen nur die benutzten Methoden realisieren müssen. Beispiel: (Beobachterklasse für SAX) class SaxCatalogUnmarshaller extends DefaultHandler { public void startelement( String uri, String localname, String qname, Attributes attribs ){... } public void endelement( String uri, String localname, String qname ) {... } } public void characters( char[] data, int start, int length ) {... } 186

Will man als Beobachter einen Syntaxbaum aufbauen, muss man: - die Datenstruktur für den Syntaxbaum definieren, - eine kellerartige Verwaltung für die zu lesenden Elemente realisieren, - den Syntaxbaum ausgehend von der Kellerinfor- mation bei Erhalten der Nachrichten endelement sukkzessive aufbauen. Anwendungsbeispiel: i public class Driver { public static void main(string[] args)...{ InputSource src = new InputSource( new FileInputStream(... ) ); // 1. Beobachter erzeugen SaxCatalogUnmarshaller saxums = new SaxCatalogUnmarshaller(); // 2. Parser/Reader erzeugen XMLReader rdr = XMLReaderFactory. createxmlreader( "org.apache.xerces. parsers.saxparser SAXParser" ); // 3. Beobachter registrieren rdr.setcontenthandler( saxums ); // 4. Starten des Einlesens rdr.parse( src );... } } 187

Parsen mit JAXP: DOM-Parser Zur Repräsentation von Syntaxbäumen wird eine allgemeine Datenstruktur verwendet. Zentral ist dabei der Schnittstellentyp Node. Hier eine kleiner Auszug: interface Node { Node appendchild(node newchild) ; Node clonenode(boolean deep); NamedNodeMap getattributes(); NodeList getchildnodes(); Node getfirstchild(); Node getlastchild(); String getlocalname(); String getnamespaceuri(); Node getnextsibling(); String getnodename(); short getnodetype(); String getnodevalue();... // und viele Methoden mehr } 188

Der Typ Document repräsentiert Syntaxbäume für vollständige XML-Dokumente: interface Document extends Node {... } Da der Syntaxbaumaufbau unabhängig von der Anwendung ist, kann er ohne Weiteres gestartet werden: Anwendungsbeispiel: public class Driver { public static void main(string[] args)...{ InputSource src = new InputSource( new FileInputStream(... ) ); // 1. Parser/Reader erzeugen DOMParser prsr = new DOMParser(); // 2. Starten des Einlesens prsr.parse( p src ); // 3. Zugriff auf Syntaxbaum Document doc = prsr.getdocument(); // 4. Weitere Verarbeitung... } } 189