Das Kefk Network Wiki befindet sich im Testbetrieb.
JAXP
Aus Kefk.
Die Java API for XML Processing, oder JAXP, ist eine der Java-XML-APIs. Enthalten ist eine Reihe von Möglichkeiten zum Validieren und Parsen von XML-Dokumenten. Die zwei grundlegenden Schnittstellen sind:
- die Document Object Model Parser Schnittstelle oder DOM Interface
- die Simple API for XML Parser Schnittstelle oder SAX Interface
Weitherhin bietet die API eine XSLT-Schnittstelle an, um Transformationen an Daten und Strukturen eines XML-Dokuments zu ermöglichen.
Das J2SE 1.4 JDK war die erste JDK-Version, die mit einer Implementierung der JAXP 1.1 veröffentlicht wurde, die aktuelle J2SE wird mit dem Apache Xerces Parser ausgeliefert.
Inhaltsverzeichnis |
DOM-Schnittstelle
Die DOM-Schnittstelle ist sehr einfach aufgebaut. Sie parst ein ganzes XML-Dokument und erstellt eine vollständige „in memory“-Darstellung des Dokuments. Dabei benutzt es die Klassen und Konzepte der Spezifikation, die unter Document Object Model(DOM) Level 2 Core Specification einsehbar ist.
Der DOM-Parser wird DocumentBuilder genannt, da er eine in-memory-Dokumentendarstellung liefert. Die Klasse javax.xml.parsers.DocumentBuilder wird durch die Factory-Klasse javax.xml.parsers.DocumentBuilderFactory erzeugt. Der DocumentBuilder erstellt zunächst eine org.w3c.dom.Document-Instanz in Form einer Baumstruktur, die die Knoten im XML-Dokument enthält. Jeder Baumknoten in dieser Struktur implementiert das org.w3c.dom.Node-Interface. Es gibt viele verschiedene Typen von Baum-Knoten, die die jeweiligen Datentypen aus dem XML-Dokument repräsentieren.
Die wichtigsten Knoten sind:
- Elementknoten, eventuell mit Attributen
- Textknoten, die den gefundenen Text zwischen Start- und End-Tag eines Dokumentelementes widerspiegeln
Für eine komplette Liste der Knotentypen wird auf die javadoc Documentation des Paketes org.w3c.dom verwiesen.
SAX-Schnittstelle
Der SAX-Parser, auch SAXParser genannt, wird durch javax.xml.parsers.SAXParserFactory erstellt. Im Gegensatz zum DOM-Parser erstellt der SAXParser keine "in-memory"-Darstellung eines XML-Dokumentes, was ihn folglich schneller und weniger anspruchsvoll im Speicherverbrauch macht. Hingegen informiert der SAXParser den Client der XML-Dokumenten-Struktur durch callbacks, d. h. es werden Methoden der DefaultHandler-Instanz, die dem Parser zur Verfügung stehen, ausgeführt.
Die DefaultHandler-Klasse befindet sich im Paket org.xml.sax.helpers. Diese implementiert den ContentHandler, den ErrorHandler, den DTDHandler und die EntityResolver Interfaces. Die meisten Clients interessieren sich für die Methoden aus dem ContentHandler-Interface.
Die ContentHandler-Methoden, implementiert durch den DefaultHandler, werden aufgerufen, sobald der SAX-Parser auf die entsprechenden Elemente des XML-Dokumentes trifft. Die wichtigsten Methoden in diesem Interface sind:
- die startDocument() und endDocument()-Methode, die am start- und am end-tag eines XML-Dokumentes aufgerufen werden.
- die startElement() und endElement()-Methode, die am start- und am end-tag eines Dokumentelementes aufgerufen werden.
- die characters()-Methode. Diese wird mit dem Inhalt, der sich zwischen start- und end-tag des jeweiligen XML-Dokumentelements befindet, aufgerufen.
Der Client bietet eine Unterklasse des DefaultHandlers an, der diese Methoden überschreibt und die Daten verarbeitet. Dies kann auch das Ablegen der Daten in eine Datenbank oder das Schreiben in einen stream beinhalten.
XSLT-Schnittstelle
Die XML Stylesheet Language for Transformations, abgekürzt XSLT, erlaubt die Konvertierung eines XML-Dokumentes in andere Formen von Daten.
Weblinks
- Sun's JAXP Produktbeschreibung
- Document Object Model(DOM) Level 2 Core Specification
- Beispielprogramm, das den DOM Parser und den SAX Parser benutzt Tutorial: XML with Xerces for Java
| Dieses Dokument entstammt in seiner ersten oder einer späteren Version der deutschsprachigen Wikipedia. Es ist dort zu finden unter dem Stichwort JAXP, die Liste der bisherigen Autoren befindet sich in der Versionsliste; die Originalfassung kann dort auch bearbeitet werden. Alle Texte der Wikipedia und ihre Derivate stehen unter der GNU-Lizenz für freie Dokumentation. |
