Java API for XML Binding



Ähnliche Dokumente
Angewandte Softwareentwicklung Serialisierung

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

XSD - XML Schema Definition

Java und XML 2. Java und XML

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

5. Programmierschnittstellen für XML

5. Programmierschnittstellen für XML

JAXB 2.0. Samuel Michaelis, Wolfgang Schmiesing. Ein Programmiertutorial für die Java Architecture for XML Binding ISBN

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

JAXB 2.0. Ein Programmiertutorial für die Java Architecture for XML Binding. von Samuel Michaelis, Wolfgang Schmiesing. 1. Auflage

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

Ferhat Ayaz. XML mit C++

... MathML XHTML RDF

JAXB. Java Architecture for XML Binding.

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

XML DTD und Schema von Thomas Mangold

XMLBeam. Einfach XML-Handling. W3L AG

Kapitel 33. Der xml-datentyp. In diesem Kapitel: Der xml-datentyp 996 Abfragen aus xml-datentypen 1001 XML-Indizierung 1017 Zusammenfassung 1023

Auszug aus JAX-WS Folien

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

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

Vorgaben und Erläuterungen zu den XML-Schemata im Bahnstromnetz

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Einführung in die Java- Programmierung

etutor Benutzerhandbuch XQuery Benutzerhandbuch Georg Nitsche

RDF und RDF Schema. Einführung in die Problematik Von HTML über XML zu RDF

RECS Box Management API

XML Schema vs. Relax NG

XML-Namensräume. Marc Monecke

Predictive Modeling Markup Language. Thomas Morandell

XML - Extensible Markup Language. Agenda - Oracle XML DB

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

Gegeben ist das folgende XML-Dokument.

Computeranwendung und Programmierung (CuP)

1 Software Engineering 1

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

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

YouTube: Video-Untertitel übersetzen

Bibliothekssysteme / Verbundsysteme / Netze

Internet Explorer Version 6

XML Tutorium mit Oxygen. Oxygen Version 9.3!!

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

Objektorientierte Programmierung

Grundlagen von Python

Testen mit JUnit. Motivation

Java: Vererbung. Teil 3: super()

XML-Programmierschnittstellen: SAX, DOM

Verteilte Systeme: Übung 4

XML und SOAP Einführung und Grundlagen

WhiteStarUML Tutorial

mywms Vorlage Seite 1/5 mywms Datenhaltung von Haug Bürger

Wiederholung: Beginn

Kurzanleitung zu XML2DB

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Java Einführung Packages

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

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Zählen von Objekten einer bestimmten Klasse

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Daten- und Metadatenstandards Wintersemester 2011 / November 2011 XML II: DTD

Containerformat Spezifikation

CORBA. Systemprogrammierung WS

Norm 240 Versionierung

Containerformat Spezifikation

Binärdarstellung von Fliesskommazahlen

Refactoring relationaler Datenbank. Shaoke Wu

KURZANLEITUNG CLOUD OBJECT STORAGE

Text-Bild-Link-Editor

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

Vorkurs C++ Programmierung

Eine mathematische Reise ins Unendliche. Peter Koepke Universität Bonn

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

Assoziation und Aggregation

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

SHAREPOINT Unterschiede zwischen SharePoint 2010 & 2013

WebService in Java SE und EE

Interoperabilität mit Office-Anwendungen (1)

CLICK TO EDIT MASTER TITLE STYLE

1. Einleitung Abfrage des COON-Benutzernamens Ändern des Initial-Passwortes Anmelden an der COON-Plattform...

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff


Aufgaben zu XPath und XQuery

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

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Arbeiten mit UMLed und Delphi

E-Books erstellen mit der App Creative Book Builder

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Jederzeit Ordnung halten

Verwendung der PayJoe -API zum externen Upload von Belegen und Zahlungen

Workflow, Business Process Management, 4.Teil

3. Stored Procedures und PL/SQL

Übung: Verwendung von Java-Threads

PatXML - Version Kurzanleitung Dokumente erstellen, vervollständigen und speichern

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Transkript:

Java API for XML Binding Eine Einführung Tim Speier Fachbereich MNI Fachhochschule Gießen-Friedberg 24. Juni 2010 1 / 27

XM und Java Teil 1: Aufgabenstellung Aufgabenstellung: In einem XML-Dokument werden die Bücher und deren Autoren einer Bibliothek erfasst. Dazu gehören (stark vereinfacht) : Bibliothek Buch Autor Eine in Java programmierte Anwendung soll nun die Datenbank auslesen und den Inhalt darstellen, evtl. modifizieren und wieder als XML-Dokument speichern. Library Book 1..* - title: String - isbn: int 0..* 1..* Author - sn: String - gn: String 2 / 27

XML Auffrischung Dokument (XML) Hierarchisch strukturierte Daten in Textform Besteht aus Deklaration, Elementen, Attributen und Daten Schema (XSD) Beschreibt die Struktur der XML-Dokumente Ist selbst auch ein XML-Dokument Wohlgeformt: Dokument ist gemäß XML aufgebaut Gültig: Dokument folgt einem vorgegebenen Schema 3 / 27

XM und Java Teil 2: XML-Schema 1 <xs: complextype name= Author > 2 <x s : s e q u e n c e> 3 <x s : e l e m e n t name= sn t y p e= x s : s t r i n g /> 4 <x s : e l e m e n t name= gn t y p e= x s : s t r i n g /> 5 </ x s : s e q u e n c e> 6 </ xs: complextype> 7 8 <xs: complextype name= Book > 9 <x s : s e q u e n c e> 10 <x s : e l e m e n t name= a u t h o r s t y p e= Author minoccurs= 1 /> 11 </ x s : s e q u e n c e> 12 <x s : a t t r i b u t e name= t i t l e t y p e= x s : s t r i n g /> 13 <x s : a t t r i b u t e name= i s b n t y p e= x s : l o n g /> 14 </ xs: complextype> 15 16 <x s : e l e m e n t name= L i b r a r y > 17 <xs: complextype> 18 <x s : s e q u e n c e> 19 <x s : e l e m e n t name = books t y p e= Book minoccurs= 0 maxoccurs= unbounded /> 20 </ x s : s e q u e n c e> 21 </ xs: complextype> 22 </ x s : e l e m e n t> 4 / 27

XML und Java Teil 3: XML-Dokument 1 <L i b r a r y> 2 <books> 3 <Book t i t l e = E n t e r p r i s e I n t e g r a t i o n P a t t e r n s i s b n= 0321200683 > 4 <a u t h o r s> 5 <Author><gn>Gregor</ gn><sn>hohpe</ sn></ Author> 6 <Author><gn>Booby</ gn><sn>woolf</ sn></ Author> 7 </ a u t h o r s> 8 </Book> 9 <Book t i t l e = Java SOA Cookbook i s b n= 0321200683 > 10 <a u t h o r s> 11 <Author><gn>Eben</ gn><sn>hewitt</ sn></ Author> 12 </ a u t h o r s> 13 </Book> 14 </ books> 15 </ L i b r a r y> 5 / 27

XML und Java Teil 4: Klassische Anwendung 1. SAX Simple API for XML Sequentielles Lesen des XML-Dokuments Auslösen von Ereignissen wenn ein Element gefunden wird 2. DOM Document Object Model Aufbau der Daten als Baumstruktur im Speicher 3. Weitere StAX Streaming API for XML XPath XML Path Language 6 / 27

XML und Java Teil 5: JAXB-Anwendung 1 L i b a r y l i b =... 2 3 f o r ( Book book : l i b. getbooks ( ) ) { 4 5 S t r i n g t i t l e =book. g e t T i t l e ( ) ; 6 l o n g i s b n=book. g e t I s b n ( ) ; 7 8 System. out. p r i n t l n ( Found book : + t i t l e +i s b n ) ; 9 10 f o r ( Author a u t h o r : book. g e t A u t h o r s ( ) ) { 11 12 S t r i n g sn=a u t h o r. getsn ( ) ; 13 S t r i n g gn=a u t h o r. getgn ( ) ; 14 15 System. out. p r i n t l n ( Author : +a u t h o r ) ; 16 17 } 18 } 7 / 27

Java und XML Analogien XML Schema Java Class follows instance of XML Document Java Object 8 / 27

JAXB Konzeptionell XML Schema compile Java Class Java Class generate follows validate instance of XML Document unmarshall Java Object Java Object marshall 9 / 27

Schema/Klasse Mapping Schema-Compiler Erstellt aus XML-Schemata entsprechende Java-Klassen Schema-Generator Erstellt aus Java-Klassen entsprechende XML-Schemata Aber Achtung: Keine vollständige Abbildung XML Schema compile Java Class Java Class generate 10 / 27

Schema-Compiler: Beispiel 1. XML-Schema Library.xsd (Auszug): 1 <xs: complextype name= Author > 2 <x s : s e q u e n c e> 3 <x s : e l e m e n t name= sn t y p e= x s : s t r i n g /> 4 <x s : e l e m e n t name= gn t y p e= x s : s t r i n g /> 5 </ x s : s e q u e n c e> 6 </ xs: complextype> 2. Aufruf des Compilers: $> xjc Library.xsd 3. Ergebnis (generierte Dateien): Author.java Book.java Library.java ObjectFactory.java 11 / 27

Schema-Compiler: Ergebnis (vereinfacht) 1 p u b l i c c l a s s Author { 2 3 p r o t e c t e d S t r i n g sn ; 4 p r o t e c t e d S t r i n g gn ; 5 6 p u b l i c S t r i n g getsn ( ) { 7 r e t u r n sn ; 8 } 9 10 p u b l i c v o i d s e t S n ( S t r i n g v a l u e ) { 11 t h i s. sn = v a l u e ; 12 } 13 14 p u b l i c S t r i n g getgn ( ) { 15 r e t u r n gn ; 16 } 17 18 p u b l i c v o i d setgn ( S t r i n g v a l u e ) { 19 t h i s. gn = v a l u e ; 20 } 21 22 } 12 / 27

Schema-Compiler: Ergebnis (vereinfacht) 1 p u b l i c c l a s s Book { 2 3 p r o t e c t e d L i s t <Author> a u t h o r s ; 4 p r o t e c t e d S t r i n g t i t l e ; 5 p r o t e c t e d l o n g i s b n ; 6 7 p u b l i c L i s t <Author> g e t A u t h o r s ( ) { 8 i f ( a u t h o r s == n u l l ) { 9 a u t h o r s = new A r r a y L i s t <Author >() ; 10 } 11 r e t u r n t h i s. a u t h o r s ; 12 } 13 14 p u b l i c S t r i n g g e t T i t l e ( ) { 15 r e t u r n t i t l e ; 16 } 17 18 [... ] 19 20 } 13 / 27

Type Mapping Übersicht Java Type boolean byte short int long float double XML Type xs:boolean xs:byte xs:short xs:int xs:long xs:float xs:double Java Class java.lang.string java.math.biginteger java.math.bigdecimal java.util.calendar java.util.date java.lang.object java.util.uuid XML Type xs:string xs:integer xs:decimal xs:datetime xs:datetime xs:anytype xs:string 14 / 27

Schema-Generator: Beispiel 1. Java-Klassen (Sammlung): 1 p u b l i c c l a s s Author { 2 3 p r i v a t e S t r i n g sn ; 4 p r i v a t e S t r i n g gn ; 5 6 // some g e t t e r s and s e t t e r s... 7 [... ] 8 } 2. Aufruf des Generators: $> schemagen Library.java 3. Ergebnis (generierte Datei): schema1.xsd 15 / 27

Type Mapping Annotationen Etwa 30 Annotationen steuern das Mapping (Auszug): XmlSchema XmlRootElement XmlElement XmlElementWrapper XmlAttribute XmlValue XmlType XmlJavaTypeAdapter... 16 / 27

Schema-Generator: Beispiel Library.java (Auszug): 1 @XmlRootElement ( name = L i b r a r y ) 2 p u b l i c c l a s s L i b r a r y { Book.java (Auszug): 1 @XmlAttribute ( r e q u i r e d = t r u e ) 2 p r o t e c t e d S t r i n g t i t l e ; 3 @XmlAttribute ( r e q u i r e d = t r u e ) 4 p r o t e c t e d l o n g i s b n ; Author.java (Auszug): 1 @XmlElement ( r e q u i r e d = t r u e ) 2 p r o t e c t e d S t r i n g sn ; 3 @XmlElement ( r e q u i r e d = t r u e ) 4 p r o t e c t e d S t r i n g gn ; 17 / 27

Dokument/Objekt Binding Marshalling Erstellt aus Java-Objekten entsprechende XML-Dokumente Unmarshalling Erstellt aus XML-Dokumenten entsprechende Java-Objekte XML Document unmarshall Java Object Java Object marshall 18 / 27

JAXB Übersicht Klassen JAXBContext: Einstiegspunkt in der Anwendung Unmarshaller: Deserialisiert von XML nach Java Marshaller: Serialisiert Java-Objekte zu XML-Dokumenten 19 / 27

1. Code in der Anwendung: 1 L i b r a r y l i b=new L i b r a r y ( ) ; 2 Book b=new Book ( ) ; 3 Marshalling: Beispiel 4 b. s e t T i t l e ( E n t e r p r i s e I n t e g r a t i o n P a t t e r n s ) ; 5 b. s e t I s b n ( 0321200683 ) ; 6 b. g e t A u t h o r s ( ). add ( new Author ( Gregor, Hohpe ) ) ; 7 b. g e t A u t h o r s ( ). add ( new Author ( Booby, Woolf ) ) ; 8 9 l i b. getbooks ( ). add ( b ) ; 2. Aufruf des Marshallers: 1 JAXBContext c=jaxbcontext. n e w I n s t a n c e ( L i b r a r y. c l a s s ) ; 2 M a r s h a l l e r m=c. c r e a t e M a r s h a l l e r ( ) ; 3 4 m. m a r s h a l l ( l i b, L i b r a r y. xml ) ; 3. Ergebnis (generierte Datei): Library.xml 20 / 27

Unmarshalling: Beispiel 1. XML-Dokument Library.xml (Auszug): 1 <L i b r a r y> 2 <books> 3 <Book t i t l e = E n t e r p r i s e I n t e g r a t i o n P a t t e r n s i s b n= 0321200683 > 4 <a u t h o r s> 5 <Author><gn>Gregor</ gn><sn>hohpe</ sn></ Author> 6 <Author><gn>Booby</ gn><sn>woolf</ sn></ Author> 2. Aufruf des Unmarshallers: 1 JAXBContext c=jaxbcontext. n e w I n s t a n c e ( L i b r a r y. c l a s s ) ; 2 U n m a r s h a l l e r u=c. c r e a t e U n m a r s h a l l e r ( ) ; 3 4 L i b r a r y l i b =( L i b r a r y ) u. u n m a r s h a l l ( L i b r a r y. xml ) ; 3. Ergebnis (Code in der Anwendung): 1 f o r ( Book book : l i b. getbooks ( ) ) { 2 3 [... ] 21 / 27

JAXB Validierung Validierung möglich bei Marshalling und Unmarshalling Eigentliche Validierung wird von JAXP durchgeführt Prüfung erst beim Schreiben bzw. Lesen 1 SchemaFactory s f=schemafactory. n e w I n s t a n c e ( XMLConstants. W3C SCHEMA NS URI) ; 2 3 m a r s h a l l e r. setschma ( s f. newschema ( L i b r a r y. xsd ) ) ; 4 5 t r y { 6 7 m a r s h a l l e r. m a r s h a l l ( l i b, L i b r a r y. xml ) ; 8 10 9 } catch ( M a r s h a l l E x c e p t i o n mex ) { 11 mex. p r i n t S t a c k T r a c e ( ) ; 12 } 22 / 27

Weiterführende Themen Einschränkunen beim Mapping zwischem Schemata und Klassen (analog impedance mismatch) Verhalten bei Änderung der Klassen Verhalten bei Änderung der Schemata Weitere: OR-Mapping mit JAXB (HyperJAXB)... 23 / 27

Alternativen Andere Techniken SAX DOM StAX XPath... 24 / 27

Alternativen Ähnliche Projekte Castor: JBind JiXB Quick Zeus Java XML Binding Java SQL Persistence 25 / 27

Zusammenfassung 1. JAXB erlaubt uns aus Klassen entsprechende Schemas zu generieren aus Schemas entsprechende Klassen zu generieren aus Objekten entsprechende Dokumente zu generieren aus Dokumenten entsprechende Objekte zu generieren Java-Objekte gegen ein XML-Schema zu validieren 2. JAXB unterscheidet sich durch die direkte Verwendung des Datenmodells 3. JAXB kann verwendet werden wenn eine Java-Anwendung mit XML umgehen muss 26 / 27

Danke für die Aufmerksamkeit. Haben Sie Fragen? 27 / 27