11 XML Programmierung



Ähnliche Dokumente
Berner Fachhochschule Software Schule Schweiz JDOM. Beatrice Amrhein. Oktober 06

1 Software Engineering 1

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

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

XML-Programmierschnittstellen: SAX, DOM

5. Programmierschnittstellen für XML

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

5. Programmierschnittstellen für XML

XML Verarbeitung mit einer in Haskell eingebetteten DSL. Manuel Ohlendorf (xi2079)

Große Übung Praktische Informatik 1

Objektorientierte Programmierung

Java und XML 2. Java und XML

Online-Publishing mit HTML und CSS für Einsteigerinnen

Javakurs zu Informatik I. Henning Heitkötter

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

Java Einführung Collections

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

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

Gebundene Typparameter

Remote Method Invocation

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

Verarbeitung von XML mit SAX und DOM

Typumwandlungen bei Referenztypen

Wiederholung: Beginn

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

XML-Frameworks in verschiedenen Programmiersprachen Proseminar Textkodierung und Auszeichnung

XMLBeam. Einfach XML-Handling. W3L AG

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

Predictive Modeling Markup Language. Thomas Morandell

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Themen. Web Service - Clients. Kommunikation zw. Web Services

Gliederung Grundlagen Schlüsselworte try-catch Fehlerobjekte Fehlerklassen Schlüsselwort finally Schlüsselwort throws selbst erstellte Exceptions

Jens Kupferschmidt Universitätsrechenzentrum

Dokumentenstrukturen

Übungen zu Softwaretechnik

Prinzipien Objektorientierter Programmierung

Objektorientierte Programmierung

U08 Entwurfsmuster (II)

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Nathan Burgener. Design by Contract. Modul SWE

Current Workflow. formatted. Rules. Extensions. Rules. DOM processing with Meta API-calls. Code Generation (Smarty) XMLfile. Source code.

Entwicklung einer formalen Sprache zur Modelltransformation auf Basis von UML & XMI

Client-Server-Beziehungen

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

inews: XML in der Praxis Konvertierung von Objekten nach XML und zurück Dr. St. Seefeld / INGTES AG

Programmieren in Java

XML Grundlagen. Andreas Rottmann,Sebastian Riedl. 27. August Quit Full Screen Previous Page Next Page GoTo Page Go Forward Go Back

EXASOL Anwendertreffen 2012

Kapitel 6. Vererbung

Assoziation und Aggregation

368 4 Algorithmen und Datenstrukturen

Ferhat Ayaz. XML mit C++

Einführung in die Programmierung für Wirtschaftsinformatik

Java Einführung Abstrakte Klassen und Interfaces

Java-Schulung Grundlagen

XML Informationsmodelle

Fortgeschrittenes Programmieren mit Java. Test Driven Development

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Algorithmen und Datenstrukturen

WPF Steuerelemente Listbox, ComboBox, ListView,

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

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

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Grundlagen von Python

JavaScript in Drupal

3 Objektorientierte Konzepte in Java

Programmierkurs Java

Kapitel 9. Inner Classes. 9.1 Wiederholung: Iteratoren. Ausführen einer Operation auf allen Elementen einer Containerklasse

TCP/IP Programmierung. C# TimeServer Java6 TimeClient

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

Auszug aus JAX-WS Folien

XML und SOAP Einführung und Grundlagen

Spezifikation DPD und primetime WebService Shopfinder Gültig für Paketversender in Österreich. Version 3.3.0

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

> Datenstrukturen in Java (Teil 3)

Grundzüge und Vorteile von XML-Datenbanken am Beispiel der Oracle XML DB

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

XML-Verarbeitung. XPath XSL die extensible Stylesheet Language. Torsten Schaßan SCRIPTO Modul 4: EDV Wolfenbüttel

JDBC. Allgemeines ODBC. java.sql. Beispiele

... MathML XHTML RDF

Einführung in Javadoc

Aufgabenblatt Nr. 5 Generizität und TicTacToe

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Kapitel 6. Vererbung

Problemstellung. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 24: Reflection 1. IDE und automatische Tests.

SEP 114. Design by Contract

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Transkript:

11 XML Programmierung Programmatische Interfaces (API) zur Manipulation von XML (DOM und JDOM) Data Binding: Abbildung von DTD/Schema auf isomorphe Datenstrukturen Strombasierte Verarbeitung Integration von XML in Programmiersprachen Vorläufige Version 511 c 2005 Peter Thiemann

DSLs für XML DSL = domain specific language XPath: Spezialsprache zur Navigation in XML Dokumenten XSLT: Spezialsprache zur Transformation von XML Dokumenten (XQuery: datenbankmäßige Verarbeitung von XML) Helfen nur bedingt bei Anwendungen, die XML-Daten lesen und schreiben müssen Anwendungen, die XML-Daten visuell darstellen und editieren Implementierung von XSLT, XQuery, etc Vorläufige Version 512 c 2005 Peter Thiemann

Ansätze zur XML Verarbeitung Strings lesen und schreiben nicht zufriedenstellend komplizierte Aufgabe: Unicode, verschiedene Zeichenkodierungen Wohlgeformtheit Gültigkeit Spezialisierte APIs fürs Parsen von XML Repräsentation Navigieren durch XML Repräsentation Manipulieren von XML Repräsentation Serialisierung in XML Text Vorläufige Version 513 c 2005 Peter Thiemann

11.1 Die DOM API DOM = Document Object Model W3C Empfehlung DOM Level 3 http: //www.w3.org/tr/2004/rec-dom-level-3-core-20040407/ Selbstdarstellung:... a platform- and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure and style of [XML] documents. Sprachunabhängigkeit durch Verwendung von IDL (OMG) Implementierungen für viele Sprachen: Java, JavaScript, Python, Perl, C#, Fortran, Ada,... Implementiert in vielen Anwendungen (Webbrowser, OpenOffice, XMetaL,... ) Vorläufige Version 514 c 2005 Peter Thiemann

11.1.1 Das DOM Datenmodell Low-level Graphdarstellung für XML Dokumente Knotentypen (Interfaces, Ausschnitt) Node Document Element Attr DocumentType Notation Entity EntityReference ProcessingInstruction CharacterData Comment Text CDATASection Vorläufige Version 515 c 2005 Peter Thiemann

Invarianten des Datenmodells Wichtigste Invariante: Graph muss immer eine Menge von Bäumen sein (d.h., höchstens ein Vaterknoten und keine Zyklen) Jeder Knoten gehört zu einem Document Knoten Nicht jeder Knoten darf als Kind eines anderen Knoten auftreten Document darf nie als Kind auftreten (muss Wurzel sein) DocumentType (höchstens einmal) nur Kind von Document Element: Document (höchstens einmal), Element, Entity, EntityReference Attr gilt nicht als Kind des zugehörigen Element Text: Element, Attr, Entity, EntityReference... Invarianten werden nur informell in der API angegeben Vorläufige Version 516 c 2005 Peter Thiemann

11.1.2 XML Verarbeitung mit DOM Java Binding Document dom =...; Element result = dom.createelement("span"); Attr at = dom.createattribute("id"); at.nodevalue = "draw" + nr; result.setattributenode (at); Vorläufige Version 517 c 2005 Peter Thiemann

Weitere Aspekte Navigation: über Node-Attribute parentnode, childnodes, previoussibling, nextsibling, attributes Manipulation: über Node-Methoden insertbefore(), replacechild(), appendchild(), removechild() Parsen und Serialisieren (Load and Save) Validieren gegen DTD und XML Schema Auswertung von XPath (1.0) Insgesamt etwa 200 Methoden Vorläufige Version 518 c 2005 Peter Thiemann

11.2 JDOM DOM oft unelegant, da sprachunabhängig universell einsetzbar erfordert Erfahrung JDOM spezialisiert für Java 80/20 Prinzip: einfache und häufige Aufgaben unterstützt speziellere Aufgaben schwieriger Vorläufige Version 519 c 2005 Peter Thiemann

11.2.1 JDOM Eigenschaften Kollektionen von Elementen und Attributen dargestellt durch java.util.list mit Iterator Datenmodell besteht aus (abstrakten) Klassen und Interfaces (Java) Implementierung kann für Java optimiert werden API einfacher zu lernen, da die Indirektion über IDL wegfällt Vorläufige Version 520 c 2005 Peter Thiemann

11.2.2 JDOM Datenmodell Content Parent Comment ProcessingInstruction EntityRef Text DocType Element Document CDATA ähnliche Operationen wie DOM Bauminvariante wird zur Laufzeit geprüft Vorläufige Version 521 c 2005 Peter Thiemann

Beispiel: Höhe eines XML Baums import java. util.*; import org. jdom.*; public class XmlHeight { int xmlheight ( Element e) { Iterator i = e. getcontent. iterator (); int max = 0; while (i. hasnext ()) { Object c = i. next (); int h = ( c instanceof Element? xmlheight (( Element )c) : 1); if (h>max ) max = h; return max +1; Vorläufige Version 522 c 2005 Peter Thiemann

Beispiel: Modifikation eines Dokuments import org. jdom. filter.*; static void doublesugar ( Document d) throws DataConversionException { Namespace rcp = Namespace. getnamespace (" http :// www. brics.dk/ ixwt / re Filter f = new ElementFilter (" ingredient ", rcp ); Iterator i = d. getdescendants (f); while (i. hasnext ()) { Element e = ( Element )i. next (); if (e. getattributevalue (" name "). equals (" sugar ")) { double amount = e. getattribute (" amount "). getdoublevalue (); e. setattribute (" amount ", new Double (2* amount ). tostring ()); Vorläufige Version 523 c 2005 Peter Thiemann

11.2.3 Parsen, Validieren, Serialisieren JDOM enthält keinen Parser import org.jdom.input.*; Kann Dokumente aufbauen aus externem SAX-Parser (Voreinstellung: JAXP) oder existierendem DOM Dokument Validierung nur beim Parsen, nicht im Speicher import org.jdom.output.*; Ausgabe als DOM Dokument SAX-Events XML-Strom Vorläufige Version 524 c 2005 Peter Thiemann

Beispiel: XML Lesen, Ändern, Schreiben static void doit ( String [] args ) throws Exception { SAXBuilder b = new SAXBuilder (); Document d = b. build ( new File (" recipes. xml " )); Namespace rcp = Namespace. getnamespace (" http :// www. brics.dk/ ixwt / recipes "); d. getrootelement (). getchild (" description ", rcp ). settext (" Cool recipes!"); XMLOutputter outputter = new XMLOutputter (); outputter. output (d, System. out ); Vorläufige Version 525 c 2005 Peter Thiemann

Beispiel:... mit Validierung SAXBuilder b = new SAXBuilder (); b. setvalidation ( true ); String msg = "No errors!"; try { Document d = b. build ( new File ( args [0])); catch ( JDOMParseException e) { msg = e. getmessage (); Vorläufige Version 526 c 2005 Peter Thiemann

11.2.4 JDOM mit XPath und XSLT Hooks für XPath 1.0 Auswertung Package org.jdom.xpath Implementierung kann zur Laufzeit gesetzt werden XSLT Transformation Package org.jdom.transform Implementierung kann zur Laufzeit gesetzt Vorläufige Version 527 c 2005 Peter Thiemann

Beispiel: JDOM mit XPath import org. jdom. xpath.*; static void doublesugar ( Document d) throws JDOMException { XPath p = XPath. newinstance ("// rcp : ingredient [ @name = sugar ]"); p. addnamespace (" http :// www. brics.dk/ ixwt / recipes "); Iterator i = p. selectnodes (d). iterator (); while (i. hasnext ()) { Element e = ( Element )i. next (); if (e. getattributevalue (" name "). equals (" sugar ")) { double amount = e. getattribute (" amount "). getdoublevalue (); e. setattribute (" amount ", new Double (2* amount ). tostring ()); Vorläufige Version 528 c 2005 Peter Thiemann

Beispiel: JDOM mit XSLT/Xalan import org. jdom. transform.*; static void applyxslt ( String file, String sheet ) throws Exception { System. setproperty (" javax. xml. transform. TransformerFactory ", " org. apache. xalan. processor. TransformerFactoryImpl "); SAXBuilder b = new SAXBuilder (); Document d = b. build ( new File ( file )); XSLTransformer t = new XSLTransformer ( sheet ); Document h = t. transform (d); XMLOutputter outputter = new XMLOutputter (); outputter. output (h, System. out ); Vorläufige Version 529 c 2005 Peter Thiemann