Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger

 << zurück
Java ist auch eine Insel von Christian Ullenboom
Programmieren für die Java 2-Plattform in der Version 5
Java ist auch eine Insel

Java ist auch eine Insel
5., akt. und erw. Auflage
1454 S., mit CD, 49,90 Euro
Galileo Computing
ISBN 3-89842-747-1
gp Kapitel 13 Die eXtensible Markup Language (XML)
  gp 13.1 Auszeichnungssprachen
    gp 13.1.1 Die Standard Generalized Markup Language (SGML)
    gp 13.1.2 Extensible Markup Language (XML)
  gp 13.2 Eigenschaften von XML-Dokumenten
    gp 13.2.1 Elemente und Attribute
    gp 13.2.2 Beschreibungssprache für den Aufbau von XML-Dokumenten
    gp 13.2.3 Schema – eine Alternative zu DTD
    gp 13.2.4 Namensraum (Namespace)
    gp 13.2.5 XML-Applikationen
  gp 13.3 Die Java-APIs für XML
    gp 13.3.1 Das Document Object Model (DOM)
    gp 13.3.2 Simple API for XML Parsing (SAX)
    gp 13.3.3 Java Document Object Model (JDOM)
    gp 13.3.4 Pull-API StAX
  gp 13.4 Serielle Verarbeitung mit StAX
    gp 13.4.1 Unterschiede der Verarbeitungsmodelle
    gp 13.4.2 XML-Dateien mit dem Cursor-Verfahren lesen
    gp 13.4.3 XML-Dateien mit dem Iterator-Verfahren verarbeiten
    gp 13.4.4 Mit Filtern arbeiten
    gp 13.4.5 XML-Dokumente schreiben
  gp 13.5 Serielle Verarbeitung von XML mit SAX
    gp 13.5.1 Schnittstellen von SAX
    gp 13.5.2 SAX-Parser erzeugen
    gp 13.5.3 Die wichtigsten Methoden der Schnittstelle ContentHandler
  gp 13.6 XML-Dateien mit JDOM verarbeiten
    gp 13.6.1 JDOM beziehen
    gp 13.6.2 Paketübersicht
    gp 13.6.3 Die Document-Klasse
    gp 13.6.4 Eingaben aus der Datei lesen
    gp 13.6.5 Das Dokument im XML-Format ausgeben
    gp 13.6.6 Der Dokumenttyp
    gp 13.6.7 Elemente
    gp 13.6.8 Zugriff auf Elementinhalte
    gp 13.6.9 Liste mit Unterelementen erzeugen
    gp 13.6.10 Neue Elemente einfügen und ändern
    gp 13.6.11 Attributinhalte lesen und ändern
    gp 13.6.12 XPath
  gp 13.7 JAXP als Java-Schnittstelle zu XML
    gp 13.7.1 Einführung in XSLT
    gp 13.7.2 Umwandlung von XML-Dateien mit JDOM und JAXP
  gp 13.8 HTML-Dokumente einlesen


Galileo Computing

13.3 Die Java-APIs für XMdowntop

Als XML sich etablierte, bildete es mit Java ein gutes Gespann. Einer der Gründe lag im Unicode: XML ermöglicht Dokumente mit beliebigen Zeichenkodierungen, die in Java abgebildet werden konnten. Mittlerweile ist diese Abbildung nicht mehr so einfach, da in XML schnell eine Kodierung mit 32 Bit ausgewählt werden kann, die in Java nur Surrogate abbilden – nun macht die Verarbeitung keinen Spaß mehr.

Für XML-basierte Daten gibt es drei Verarbeitungstypen:

gp  DOM-orientierte APIs (repräsentieren den XML-Baum im Speicher): W3C-DOM, JDOM, dom4j, XOM, …
gp  Push-API (Nach dem Callback-Prinzip ruft der Parser Methoden auf und meldet Elementvorkommen): SAX (Simple API for XML) ist der populäre Repräsentant.
gp  Pull-API (Wie ein Tokenizer wird über die Elemente gegangen): Dazu gehören XPP (XML Pull Parser) wie sie der StAX-Standard definiert.

Während DOM das gesamte Dokument in einer internen Struktur einliest und bereitstellt, verfolgt SAX einen ereignisorientierten Ansatz. Das Dokument wird in Stücken geladen, und immer dann, wenn ein angemeldetes Element beim Parser vorbeikommt, meldet er dies in Form eines Ereignisses, das für die Verarbeitung abgefangen werden kann.


Galileo Computing

13.3.1 Das Document Object Model (DOMdowntop

DOM ist eine Entwicklung vom W3C und wird von vielen Programmiersprachen unterstützt. Das Standard-DOM ist so konzipiert, dass es unabhängig von einer Programmiersprache ist und eine strikte Hierarchie erzeugt. DOM definiert eine Reihe von Schnittstellen, die durch konkrete Programmiersprachen implementiert werden.


Galileo Computing

13.3.2 Simple API for XML Parsing (SAXdowntop

SAX ist zum schnellen Verarbeiten der Daten von David Megginson als Public-Domain entworfen worden. SAX ist im Gegensatz zu DOM nicht so speicherhungrig, weil das XML-Dokument nicht vollständig im Speicher abgelegt ist, und daher auch für sehr große Dokumente geeignet. Da SAX auf einem Ereignismodell basiert, wird die XML-Datei wie ein Datenstrom gelesen, und für erkannte Elemente wird ein Ereignis ausgelöst. Dies ist aber mit dem Nachteil verbunden, dass wahlfreier Zugriff auf ein einzelnes Element nicht ohne Zwischenspeicherung möglich ist.

Klassische Anwendungen für SAX:

gp  Darstellung der XML-Datei in einem Browser
gp  Suche nach bestimmten Inhalten
gp  Einlesen von XML-Dateien, um eine eigene Datenstruktur aufzubauen

Für einige Anwendungen ist es erforderlich, die gesamte XML-Struktur im Speicher zu verarbeiten. Für diese Fälle ist eine Struktur, wie sie DOM bietet, notwendig:

gp  Sortierung der Struktur oder einer Teilstruktur der XML-Datei
gp  Auflösen von Referenzen zwischen einzelnen XML-Elementen
gp  Interaktives Arbeiten mit der XML-Datei

Ob in eigenen Programmen DOM oder SAX eingesetzt wird, ist von Fall zu Fall unterschiedlich. In manchen Fällen ist dies auch Geschmackssache, doch ärgerlicherweise unterscheidet sich das Programmiermodell, sodass eine Umstellung nicht so angenehm ist. Wünschenswert ist eine API, die einen unabhängigen Zugriff auf XML-Daten anbietet.


Galileo Computing

13.3.3 Java Document Object Model (JDOMdowntop

JDOM ist eine einfache Möglichkeit, XML-Dokumente leicht und effizient mit einer schönen Java-API zu nutzen. Im Gegensatz zu SAX und DOM, die unabhängig von einer Programmiersprache sind, wurde JDOM speziell für Java entwickelt. Während das Original-DOM keine Rücksicht auf die Java-Datenstrukturen nimmt, nutzt JDOM konsequent die Collection-API. Auch ermöglicht JDOM eine etwas bessere Performance und eine bessere Speichernutzung als beim Original-DOM.


Galileo Computing

13.3.4 Pull-API StAX  toptop

Im Gegensatz zu SAX, bei dem Methoden bereit gestellt werden, die beim Parsen aufgerufen werden, wird bei der Pull-API aktiv der nächste Teil eines XML-Dokuments angefordert. Das Prinzip entspricht dem Iterator Design Pattern, das auch von der Collection-API bekannt ist. Es werden die beiden grundsätzlichen Verarbeitungsmodelle »Iterator« und »Cursor« unterschieden. Die Verarbeitung mit dem Iterator ist flexibler, aber auch ein biss-chen aufwändiger. Die Cursor-Verarbeitung ist einfacher und schneller aber, nicht so flexibel. Beide Formen sind sich sehr ähnlich. Hier werden beide Verfahren vorgestellt.

 << zurück




Copyright © Galileo Press GmbH 2005
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de