Upload
baldric-wuertz
View
112
Download
0
Embed Size (px)
Citation preview
Java und XML
Seminarbeitrag von Ralph-Peter Noll
22. Januar 2001
Gliederung
1. Grundlagen XML und Java2. Parsing in Java3. Transformationen4. Datenaustausch5. 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 XML-Java
Portabilität, AllgemeinheitStandardisierte Programmier-Interfaces
mit austauschbaren ImplementationenNetzwerkorientierung
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 ParsenDOM - Dokument-Baum, sprach-
unabhängigJAXP - SAX + DOM + ErgänzungenJDOM - 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
ParserDocumentHandlerAttributeListErrorHandlerLocatorDTDHandlerEntityResolver
SAX Version 2 Neuerungen
Unterstützung von Namespaces.Filterungerweiterte 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 DatenNachteile:
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)
DocumentElementAttributeCharacterDataEntity, EntityReferenceHilfsklassen
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
StylesheetsViews RangeTraversalEventsDetailverbesserungen , z.B. bessere
Suchfunktionen
JAXP (Java API for XML Parsing)
„Komplettlösung“ für die meisten Java-XML-Projekte
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 JAXMXML-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
ParserXSLT-Prozessorensonstige Java-XML-Tools
Parser
Apache XML Parser ‚Xerces‘IBM XML Parser ‚ XML4J‘Oracle XML parserSun 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 aufbautXT - freier XSLT-Prozessor von James
Clark'sSun 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