Java und XML

Werbung
Java und XML
Seminarbeitrag von Ralph-Peter Noll
22. Januar 2001
Gliederung
1.
2.
3.
4.
5.
Grundlagen XML und Java
Parsing in Java
Transformationen
Datenaustausch
Tools
1. Grundlagen
XML (Extensible Markup Language) ?
Regelsystem zur Definition von HTMLähnlichen, formal verifizierbaren Syntaxen für
jede Art von strukturierten Daten
Java ?
OO-Sprache, setzt in akzeptabler Weise
folgende Ansprüche um: einfach,
objektorientiert, robust, sicher, portabel,
performant (...)
XML in 7 Punkten
 XML ist ein Verfahren, strukturierte Daten in
Textdokumente zu verpacken.
 XML sieht zwar aus wie HTML, ist aber anders.
 XML ist Text, wird aber normalerweise nicht von
Menschen gelesen.
 XML umfaßt eine ganze Sammlung von Technologien.
 XML ist ausführlich, aber das ist kein Problem.
 XML ist neu, aber nicht zu neu.
 XML ist kostenlos, plattformunabhängig und weit
verbreitet.
XML Beispiel
<order>
<customer>Bob</customer>
<part>Anvil
<id>982362</id>
<quantity>15</quantity>
</part>
</order>
Java
 Objektorientierte Sprache
 C/C++ Syntax unter Verzicht auf fehlerträchtige
Merkmale
 interpretiert (ggf. dynamisch optimiert)
 plattformunabhängig
 modern: netzwerk-/weborientiert, multithreaded, enthält
Sicherheitsmechanismen
Häufigste Anwendungen der
Kombination
 Konverter XML nach XML, HTML, PDF...
 XML zum Datenaustausch (Stichwort eCommerce, B2B)
 Datenpersistenz mit XML (neue „einfache“ Dateiformate)
Vorteile der Kombination XMLJava
Portabilität, Allgemeinheit
Standardisierte Programmier-Interfaces mit
austauschbaren Implementationen
Netzwerkorientierung
standardisierter Datenaustausch mit anderer
Software
leichte Erweiterbarkeit um Web-Interface
Suns XML-Tools als neuer Bestandteil der ‚Java
Plattform‘ weit verbreitet
2. Parsing
SAX - Ereignisgesteuertes Parsen
DOM - Dokument-Baum, sprach-unabhängig
JAXP - SAX + DOM + Ergänzungen
JDOM - DOM erweitert, für Java optimiert
SAX (Simple API for XML)
Ereignisgesteuerter Ansatz:
Parser liest sequentiell den Eingabestrom
Prüfung auf Korrektheit der Eingabe
Aufruf von Callback-Methoden bei bestimmten
Ereignissen
Ziel der Standardisierung solcher Parser:
Austauschbarkeit der Parser
geringe Lernerfordernisse, Wissenstransfer
SAX Interfaces
Parser
DocumentHandler
AttributeList
ErrorHandler
Locator
DTDHandler
EntityResolver
SAX Version 2 Neuerungen
Unterstützung von Namespaces.
Filterung
erweiterte Parsersteuerung
Diskussion von SAX
Vorteile:
einfach, effizient bzgl. Speicher und
Rechenzeit
geeignet für große Datenmengen
geringer Overhead bei Verarbeitung eines
geringen Anteils der Daten
Nachteile:
kein Mechanismus zum Schreiben von XML
spezifiziert
DOM (Document Object Model)
Ansatz:
Erstellung eines baumförmigen Modells der
Dokumentstruktur (XML oder HTML)
Auswertung und Manipulation dieser Struktur
über Methoden der Objekte im Baum
Sammlung von Klassen („Interfaces“), die im
Baum verwendet werden
DOM Interfaces
Node (mit Name, Typ, Wert, Kontext im Baum)
Document
Element
Attribute
CharacterData
Entity, EntityReference
Hilfsklassen
Diskussion von DOM
Vorteile:
einheitlicher Zugriff in verschiedenen
Sprachen
gezielter und schneller Zugriff
geringerer Programmieraufwand als bei SAX
besser geegnet zur Generierung
dynamischen Inhalts
Diskussion von DOM (2)
Nachteile:
Schreiben von XML nicht enthalten
automatisches Durchschreiten des Baumes
nicht enthalten
in Corba-IDL spezifiziert, Java-API
ausgeschlossen
konsequente Baumorientierung umständlich
zunächst hoher Overhead für Baumerstellung
DOM Level 2 Neuerungen
Stylesheets
Views
Range
Traversal
Events
Detailverbesserungen , z.B. bessere
Suchfunktionen
JAXP (Java API for XML Parsing)
„Komplettlösung“ für die meisten Java-XMLProjekte
Komponenten:
Parser (namentlich SAX 1.0)
Objektmodell (DOM Level 1)
einheitliche Schnittstellen zur Erzeugung von
Objekten (Factories)
JAXP 1.1 mit XSL, SAX 2 und DOM 2
‚available soon‘
JDOM (Java Document-Object
Model)
Ziel: kompaktes API, das nur die Stärken von
SAX und DOM vereint
kann auch auf vorhandenen SAX und DOM
Parsern aufsetzen
Ausgabe von XML möglich
3. Transformation als Anwendung
häufige Anwendung: on-the-fly Generierung von
Webseiten
Probleme:
Effizienz
Zielformate (HTML-Versionen, XML etc...)
dynamische Inhalte
Transformation mit SAX und DOM
SAX
Ausgabe während Scanner-Durchlauf, einfache
Transformationen möglich
DOM
Parsing, Aufbau eines Parsebaums
Manipulation dieses Baums
rekursive Generierung anhand Dokumentstruktur
XSL
(Extensible Stylesheet Language)
Stylesheet-Sprache für XML, besteht aus
XSLT: Transformationsprache XML nach XML
XSL-FO: XML-Vokabular für Formatierungen
Java-Unterstützung
JAXP 1.1, diverse Tools
JSP und Java Servlets
Ansatz: Java Programm läuft im Server
Servlet
Java-Programm aus JSP-Dokument generiert
Integration in XML über ‚Processing Instructions‘
Dynamic Content Processing (DCP):
Manipulationen auf DOM-Objekten vor der
Transformation
4. Datenaustausch als
Anwendung
Begriff Enterprise Application Integration (EAI)
Begriff Electronic Data Interchange (EDI)
SOAP und JAXM
XML-RPC
Begriffe EDI und EAI
EAI (Enterprise Application Integration)
Abstrakter betriebswirtschaftlicher Oberbegriff für
betriebswirtschaftlich geprägte Vorgänge der
Kopplung vorhandener Anwendungen und Integration
in neuen Anwendungen
EDI (Electronic Data Interchange )
System zur Festlegung von normierten Formaten für
den Austausch von Daten zwischen kommerziellen
Datenverarbeitungsprogrammen (Stichwort B2B)
zunehmend über das Internet
SOAP und JAXM
(Simple Object Access
Protocol, Java API for XML Messaging)
Ziel:
Austausch strukturierter, typisierter Daten über
Standardprotokolle wie HTTP, FTP, SMTP mittels
‚einfacher‘ Mechanismen.
 Robustheit, schnelle Entwicklung
Bestandteile des W3C Protokolls SOAP:
Nachrichtenformat: Envelope, Header, Body in XML
Kodierung / Serialisierung von Typen und Klassen
RPC Konventionen für remote Prozeduraufrufe
JAXP ist ein konkurrierender Standard von Sun
mit stärkerer Ausrichtung auf eBusiness.
5. Tools
Parser
XSLT-Prozessoren
sonstige Java-XML-Tools
Parser
Apache XML Parser ‚Xerces‘
IBM XML Parser ‚ XML4J‘
Oracle XML parser
Sun XML parser (s.o.)
XP - freier XML parser von James Clark
XSLT Prozessoren
Apache XML Prozessor ‚ Xalan‘ (Java und C++)
Lotus LotusXSL, auf dem Xalan aufbaut
XT - freier XSLT-Prozessor von James Clark's
Sun XSLT-to-Java Compiler
sonstige Java XML Tools
IBM XML + Web Services
Entwicklungsumgebung
Apache Cocoon und Xang - Framework zur
Generierung dynamischer Webseiten aus XML
mit Java und Javascript
6. Ausblick
JAXB (API for XML Data Binding): direktes
Mapping von XML-Strukturen auf Java-Klassen
Ziel: keine Parser mehr verwenden, sondern direkt
XML-Schemata als Java-Klassen einbinden.
Letzter fehlender Baustein von Suns JAX (Java API
for XML) bestehend aus JAXP, JAXM und JAXB
Herunterladen