Java API for XML Processing

Java API for XML Processing

Das Java API for XML Processing, oder JAXP, ist eines der Java-XML-APIs. Es handelt sich um ein leichtgewichtiges standardisiertes API zum Validieren, Parsen, Generieren und Transformieren von XML-Dokumenten. Die jeweilige (nicht standardisierte) Implementierung des APIs ist austauschbar (pluggable). Die vier grundlegenden Schnittstellen sind:

  • das Document Object Model Parser-Schnittstelle oder DOM-Schnittstelle
  • das Simple API for XML Parser-Schnittstelle oder SAX-Schnittstelle
  • das Streaming API for XML oder StAX-Schnittstelle (hinzugefügt in JDK 6; separat als Jar verfügbar für JDK 5)
  • die XSLT-Schnittstelle, 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 JSE wird mit Apache Xerces und einer angepassten Variante von Xalan (für XSLT) 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[1] einsehbar ist.

Der DOM-Parser wird DocumentBuilder genannt, da er eine in-memory-Dokumentendarstellung liefert. Eine Instanz der 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 die org.w3c.dom.Node-Schnittstelle. 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.

Mit dem DOM-API kann man 'in beide Richtungen' arbeiten, also vom XML zum "in memory" DOM als auch vom DOM zum XML. Es eignet sich also nicht nur zum "parsen" von XML sondern auch zum Generieren von XML (-Streams oder -Files).

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 Rückruffunktionen (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-Schnittstelle. Die meisten Clients interessieren sich für die Methoden aus der ContentHandler-Schnittstelle.

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 dieser Schnittstelle 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.

Mit dem SAX-API kann man 'nur in eine Richtung' arbeiten, und zwar vom XML 'hinein' in Java. Es eignet sich also ausschließlich zum "parsen" von XML. Mit SAX kann man also kein XML (-Streams oder -Files) erzeugen.

XMLPULL-Schnittstelle

Seit JAXP 1.2 und somit JSE 6 und J2EE 1.4 ist die Streaming API for XML (StAX) Bestandteil von JAXP. Diese dient dazu mittels sogenannter XMLPULL Parser XML Daten zu lesen. XMLPULL ist ähnlich wie SAX, nur dass der Parser nicht wie bei SAX Informationen an die Applikation über einen Event-Mechanismus schickt ("PUSH"), sondern die Anwendung holt sich die nächsten Informationen selbst, wenn sie sie benötigt ("PULL"). XMLPULL Parser sind üblicherweise performanter als SAX Parser.

XSLT-Schnittstelle

Die Extensible Stylesheet Language for Transformations, abgekürzt XSLT, erlaubt die Konvertierung eines XML-Dokumentes in andere Formen von Daten.

XSD-Validierung

Validierung von XSD-Dateien wird ab JAXP 1.2 unterstützt. JAXP 1.2 ist ab JSE 6.0 und J2EE 1.4 Teil der Java Plattform.

Einzelnachweise

  1. http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-20001113

Weblinks


Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Java API For XML Processing — (JAXP) est l interface de programmation Java de Sun permettant la création, la manipulation et le traitement de fichiers XML à bas niveau. Cette interface permet d analyser les fichiers XML selon les normes DOM ou SAX, et de les transformer à l… …   Wikipédia en Français

  • Java api for xml processing — (JAXP) est l interface de programmation Java de Sun permettant la création, la manipulation et le traitement de fichiers XML à bas niveau. Cette interface permet d analyser les fichiers XML selon les normes DOM ou SAX, et de les transformer à l… …   Wikipédia en Français

  • Java API for XML Processing — (JAXP) est l interface de programmation Java de Sun permettant la création, la manipulation et le traitement de fichiers XML à bas niveau. Cette interface permet d analyser les fichiers XML selon les normes DOM ou SAX, et de les transformer à l… …   Wikipédia en Français

  • Java API for XML Processing — The Java API for XML Processing, or JAXP (pronounced jaks p ), is one of the Java XML programming APIs. It provides the capability of validating and parsing XML documents. The three basic parsing interfaces are: * the Document Object Model… …   Wikipedia

  • Streaming API for XML — (StAX) ist ein Application Programming Interface (API), um XML Dateien aus Java zu verarbeiten. Die Referenzimplementierung ist als freie Software unter den Bedingungen der Apache Lizenz verfügbar. Inhaltsverzeichnis 1 Technik 2 Ursprünge 3 …   Deutsch Wikipedia

  • Simple api for xml — Pour les articles homonymes, voir SAX. Simple API for XML ou SAX est une interface de programmation pour de nombreux langages permettant de lire et de traiter des documents XML. L’API SAX est originellement spécifique au langage de programmation… …   Wikipédia en Français

  • Simple API for XML — Pour les articles homonymes, voir SAX. Simple API for XML ou SAX est une interface de programmation pour de nombreux langages permettant de lire et de traiter des documents XML. L’API SAX est originellement spécifique au langage de programmation… …   Wikipédia en Français

  • Java Specification Request — Java Specification Requests Java Specification Requests (JSR) est un système normalisé ayant pour but de faire évoluer la plateforme Java. Sommaire 1 Présentation 2 Implémentation 3 Interopérabilité informatique …   Wikipédia en Français

  • Java Specification Requests — (JSR) est un système normalisé ayant pour but de faire évoluer la plateforme Java. Sommaire 1 Présentation 2 Implémentation 3 Liste des JSRs 4 Notes et …   Wikipédia en Français

  • Java 2 Enterprise Edition — Java Platform, Enterprise Edition, abgekürzt Java EE oder früher J2EE, ist die Spezifikation einer Softwarearchitektur für die transaktionsbasierte Ausführung von in Java programmierten Anwendungen und insbesondere Web Anwendungen. Sie ist eine… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”