Arbeit mit XML in Java: Bibliotheken und Werkzeuge für das Parsing

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeit mit XML in Java: Überblick über Bibliotheken und Werkzeuge

XML (eXtensible Markup Language) bleibt eines der wichtigsten Formate für die Speicherung und Übertragung strukturierter Daten in Unternehmensanwendungen, Webdiensten und Konfigurationsdateien. Java bietet eine umfangreiche Sammlung integrierter und externer Bibliotheken für die Arbeit mit XML. In diesem Artikel werden wir die wichtigsten Werkzeuge, ihre Besonderheiten und Anwendungsbeispiele im Detail besprechen.



Integrierte APIs für die Arbeit mit XML

Die Standardbibliothek von Java (Java SE) enthält drei Haupt-APIs zum Parsen und Verarbeiten von XML:



1. DOM (Document Object Model)

DOM ist eine API, die das gesamte XML-Dokument als Baumstruktur in den Speicher lädt. Dies ist praktisch für den wahlfreien Zugriff auf Elemente, erfordert jedoch große Ressourcen bei der Arbeit mit großen Dateien.

Wann verwenden: wenn das Dokument häufig geändert oder komplexe Abfragen an seine Struktur gestellt werden müssen.



import javax.xml.parsers.*;import org.w3c.dom.*;

public class DomExample { public static void main(String[] args) throws Exception { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse("data.xml");

NodeList books = doc.getElementsByTagName("book"); for (int i = 0; i < books.getLength(); i++) { Element book = (Element) books.item(i); String title = book.getElementsByTagName("title").item(0).getTextContent(); System.out.println("Buch: " + title); } }}


2. SAX (Simple API for XML)

SAX ist ein ereignisgesteuerter Parser. Er liest das Dokument sequenziell und ruft beim Auftreten von Tags, Attributen oder Text Handler-Methoden auf. Es wird kein Baum im Speicher erstellt, daher ist es ideal für große Dateien.

Wann verwenden: für die Streaming-Verarbeitung sehr großer XML-Dateien (z. B. Logs oder Exportdaten).



import org.xml.sax.*;import org.xml.sax.helpers.*;import javax.xml.parsers.*;

public class SaxExample extends DefaultHandler { public void startElement(String uri, String localName, String qName, Attributes attrs) { if ("book".equals(qName)) { System.out.println("Buch gefunden mit id: " + attrs.getValue("id")); } }

public static void main(String[] args) throws Exception { SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); parser.parse("data.xml", new SaxExample()); }}


3. StAX (Streaming API for XML)

StAX ist ein Streaming-Pull-Parser. Im Gegensatz zu SAX, bei dem Ereignisse in den Handler "gedrückt" werden, erlaubt StAX dem Programm, das nächste Element anzufordern (Pull-Modell). Dies gibt mehr Kontrolle über den Parsing-Prozess.

Wann verwenden: wenn die Flexibilität von SAX benötigt wird, aber mit der Möglichkeit, das Lesen anzuhalten und fortzusetzen.



import javax.xml.stream.*;

public class StaxExample { public static void main(String[] args) throws Exception { XMLInputFactory factory = XMLInputFactory.newInstance(); XMLStreamReader reader = factory.createXMLStreamReader( new java.io.FileInputStream("data.xml"));

while (reader.hasNext()) { int event = reader.next(); if (event == XMLStreamConstants.START_ELEMENT && "title".equals(reader.getLocalName())) { System.out.println("Titel: " + reader.getElementText()); } } reader.close(); }}


Verknüpfung von XML mit Java-Objekten: JAXB

JAXB (Java Architecture for XML Binding) ist eine standardisierte API zur Umwandlung von XML in Java-Objekte und umgekehrt (Marshalling/Unmarshalling). Po

Empfehlungen