Wie man eine XML-Datei mit Java parst

JavaJavaBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Das Parsen von XML-Dateien ist eine häufige Aufgabe in der Java-Entwicklung, da XML ein weit verbreitetes Datenformat zum Speichern und Austauschen von Informationen ist. In diesem Tutorial werden Sie durch den Prozess des Parsens von XML-Dateien mit Java-APIs geführt. Es werden praktische Beispiele und Techniken bereitgestellt, um Ihnen zu helfen, XML-Daten in Ihren Anwendungen zu verarbeiten.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/read_files("Read Files") java/FileandIOManagementGroup -.-> java/io("IO") java/FileandIOManagementGroup -.-> java/stream("Stream") java/SystemandDataProcessingGroup -.-> java/xml_dom4j("XML/Dom4j") subgraph Lab Skills java/files -.-> lab-414100{{"Wie man eine XML-Datei mit Java parst"}} java/read_files -.-> lab-414100{{"Wie man eine XML-Datei mit Java parst"}} java/io -.-> lab-414100{{"Wie man eine XML-Datei mit Java parst"}} java/stream -.-> lab-414100{{"Wie man eine XML-Datei mit Java parst"}} java/xml_dom4j -.-> lab-414100{{"Wie man eine XML-Datei mit Java parst"}} end

Einführung in die XML-Dateistruktur

XML (Extensible Markup Language, erweiterbare Auszeichnungssprache) ist ein weit verbreitetes Datenaustauschformat, das eine strukturierte Möglichkeit bietet, Informationen darzustellen und zu speichern. XML-Dateien bestehen aus Elementen, Attributen und Textinhalten, die zusammen eine hierarchische Struktur bilden.

Das Verständnis der XML-Struktur

Eine XML-Datei besteht typischerweise aus folgenden Schlüsselkomponenten:

  • XML-Deklaration: Diese gibt die verwendete XML-Version an, normalerweise <?xml version="1.0" encoding="UTF-8"?>.
  • Elemente: Dies sind die Bausteine eines XML-Dokuments, dargestellt durch in spitzen Klammern eingeschlossene Tags, z. B. <book> und </book>.
  • Attribute: Diese liefern zusätzliche Informationen über ein Element und werden im öffnenden Tag definiert, z. B. <book id="1">.
  • Textinhalt: Dies ist die eigentliche Daten oder Information, die in einem Element enthalten ist, z. B. <title>The Catcher in the Rye</title>.
  • Hierarchie: XML-Elemente können verschachtelt werden, um eine hierarchische Struktur zu erstellen, bei der untergeordnete Elemente in übergeordneten Elementen enthalten sind.
graph TD A[XML Document] --> B[XML Declaration] A --> C[Root Element] C --> D[Child Element] D --> E[Attribute] D --> F[Text Content]

XML-Namensräume

XML-Namensräume bieten eine Möglichkeit, Elemente und Attribute in einem XML-Dokument eindeutig zu identifizieren. Sie werden mit dem xmlns-Attribut definiert und können verwendet werden, um Namenskonflikte zwischen verschiedenen XML-Vokabularen zu vermeiden.

<book xmlns="http://example.com/books">
  <title>The Catcher in the Rye</title>
  <author>J.D. Salinger</author>
</book>

In diesem Beispiel gibt das xmlns-Attribut den Namensraum für das book-Element und seine untergeordneten Elemente an.

Indem Sie die grundlegende Struktur und Konzepte von XML verstehen, sind Sie besser gerüstet, um XML-Daten mit Java zu parsen und zu verarbeiten.

Parsen von XML-Dateien mit Java-APIs

Java bietet mehrere APIs zum Parsen von XML-Dateien, jede mit ihren eigenen Vorteilen und Anwendungsfällen. Die am häufigsten verwendeten XML-Parsing-APIs in Java sind:

DOM (Document Object Model)-Parser

Der DOM-Parser erstellt eine in-memory-Darstellung des gesamten XML-Dokuments als baumartige Struktur. Dies ermöglicht den zufälligen Zugriff auf und die Manipulation der XML-Daten, kann jedoch bei großen Dateien sehr speicherintensiv sein.

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("example.xml");

SAX (Simple API for XML)-Parser

Der SAX-Parser ist ein ereignisgesteuerter Parser, der das XML-Dokument sequenziell verarbeitet und für verschiedene Parsing-Ereignisse Rückrufe auslöst. Dies macht es speichereffizienter als der DOM-Parser, bietet jedoch keinen zufälligen Zugriff auf die XML-Daten.

SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
parser.parse("example.xml", new MyXMLHandler());

StAX (Streaming API for XML)-Parser

Der StAX-Parser ist ein cursorbasierter, ereignisgesteuerter Parser, der im Vergleich zu SAX eine intuitivere und flexiblere API bietet. Es ermöglicht Ihnen, XML-Daten im Stream-Verfahren zu lesen und zu schreiben, was es für die Verarbeitung großer XML-Dateien geeignet macht.

XMLInputFactory factory = XMLInputFactory.newInstance();
XMLStreamReader reader = factory.createXMLStreamReader(new FileInputStream("example.xml"));

Die Wahl der XML-Parsing-API hängt von den spezifischen Anforderungen Ihrer Anwendung ab, wie z. B. der Größe der XML-Dateien, dem Bedarf an zufälligem Zugriff und der Komplexität der XML-Struktur.

Praktische Beispiele für das Parsen von XML

In diesem Abschnitt werden wir einige praktische Beispiele für das Parsen von XML-Dateien mit den zuvor besprochenen Java-APIs untersuchen.

Parsen einer einfachen XML-Datei

Beginnen wir mit einer einfachen XML-Datei namens books.xml:

<?xml version="1.0" encoding="UTF-8"?>
<library>
  <book>
    <title>The Great Gatsby</title>
    <author>F. Scott Fitzgerald</author>
    <year>1925</year>
  </book>
  <book>
    <title>To Kill a Mockingbird</title>
    <author>Harper Lee</author>
    <year>1960</year>
  </book>
</library>

Mit dem DOM-Parser können wir diese Datei parsen und die Buchinformationen extrahieren:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("books.xml");

NodeList bookNodes = document.getElementsByTagName("book");
for (int i = 0; i < bookNodes.getLength(); i++) {
    Node bookNode = bookNodes.item(i);
    System.out.println("Title: " + bookNode.getElementsByTagName("title").item(0).getTextContent());
    System.out.println("Author: " + bookNode.getElementsByTagName("author").item(0).getTextContent());
    System.out.println("Year: " + bookNode.getElementsByTagName("year").item(0).getTextContent());
}

Parsen einer komplexen XML-Datei

Betrachten wir nun eine komplexere XML-Datei, die Namensräume (Namespaces) enthält:

<?xml version="1.0" encoding="UTF-8"?>
<library xmlns="http://example.com/library"
         xmlns:dc="http://purl.org/dc/elements/1.1/">
  <book>
    <dc:title>The Catcher in the Rye</dc:title>
    <dc:creator>J.D. Salinger</dc:creator>
    <dc:date>1951</dc:date>
  </book>
  <book>
    <dc:title>1984</dc:title>
    <dc:creator>George Orwell</dc:creator>
    <dc:date>1949</dc:date>
  </book>
</library>

Um diese Datei zu parsen und auf die Elemente mit Namensräumen zuzugreifen, können wir den folgenden Code verwenden:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse("books.xml");

NodeList bookNodes = document.getElementsByTagNameNS("http://example.com/library", "book");
for (int i = 0; i < bookNodes.getLength(); i++) {
    Node bookNode = bookNodes.item(i);
    System.out.println("Title: " + bookNode.getElementsByTagNameNS("http://purl.org/dc/elements/1.1/", "title").item(0).getTextContent());
    System.out.println("Author: " + bookNode.getElementsByTagNameNS("http://purl.org/dc/elements/1.1/", "creator").item(0).getTextContent());
    System.out.println("Year: " + bookNode.getElementsByTagNameNS("http://purl.org/dc/elements/1.1/", "date").item(0).getTextContent());
}

Durch das Verständnis dieser praktischen Beispiele sollten Sie nun einen soliden Überblick darüber haben, wie Sie XML-Dateien mit Java-APIs parsen können.

Zusammenfassung

In diesem Tutorial haben Sie gelernt, wie Sie XML-Dateien mit Java-APIs parsen können. Wir haben die Grundlagen der XML-Dateistruktur behandelt, verschiedene Java-Parsing-Ansätze untersucht und praktische Beispiele bereitgestellt, um Ihnen den Einstieg zu erleichtern. Indem Sie diese Techniken beherrschen, können Sie in Ihren Java-Projekten effizient Daten aus XML-Dateien verarbeiten und extrahieren.