XML-Dokumente mit Perls XML::Simple parsen

Sobald das Modul installiert ist, erstellt man die folgende XML-Datei und nennt sie „data.xml“:

Dann schreibt man das nachstehende Perl-Skript, welches diese Datei mithilfe des Moduls XML::Simple parst:

Einfacher als mit XML::Simple geht es nicht: Jedes Objekt der Klasse XML::Simple stellt zwei Methoden bereit: XMLin() und XMLout(). Die Methode XMLin() liest eine XML-Datei oder einen String ein und konvertiert die XML-Daten in eine Perl-Datenstruktur. Die Methode XMLout() macht genau das Gegenteil: Sie liest eine Perl-Struktur ein und gibt diese als Instanz eines XML-Dokuments zurück. Das Skript oben verwendet die Methode XMLin() zum Einlesen der zuvor erstellten Datei „data.xml“ und speichert das Ergebnis der Verarbeitung in der Variablen $data. Der Inhalt von $data wird dann mithilfe des Perl-Moduls Data::Dumper ausgegeben.

Dies ist das Ergebnis, wenn man das Skript ausführt:

Wie man sieht, wurde jedes Element und der zugehörige Inhalt in ein Schlüssel-Wert-Paar eines assoziativen Arrays (Hash) in Perl verwandelt. Auf die XML-Daten kann man nun mit der folgenden Variante des oben aufgeführten Skripts zugreifen:

Hier die entsprechende Ausgabe:

John Doe is 43 years old and works in the Operations section.

Nun ein Beispiel dafür, wie man mithilfe von XML::Simple auch kompliziertere XML-Dokumente verarbeiten kann.

Die einfache Verwendung von XML::Simple, um XML zu verarbeiten, trifft auch auf XML-Dokumente mit mehreren Ebenen zu. Als Beispiel dient die XML-Datei in Listing A. Wenn man diese mit XMLin() einliest, erhält man eine Struktur wie die in Listing B.

XML::Simple repräsentiert Elemente, die sich wiederholen, als Elemente eines anonymen Arrays. Daher wurden alle -Elemente aus der XML-Datei in ein Perl-Array umgewandelt, von denen jedes Element einen Mitarbeiter repräsentiert. Um auf den Wert „John Doe“ zuzugreifen, braucht man nur die folgende Syntax zu verwenden: $data->{employee}->[0]->{name}

Dies kann auch automatisch in einem Perl-Skript erledigt werden, indem man $data->{employees} dereferenziert und dann mithilfe einer foreach()-Schleife alle Elemente des Arrays verarbeitet. Ein Beispiel hierfür bietet der Code in Listing C. Und hier die Ausgabe:

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Lags beim Online-Gaming? DSL-Vergleich und andere Tipps schaffen Abhilfe

Beim Online-Gaming kommt es nicht nur auf das eigene Können an. Auch die technischen Voraussetzungen…

2 Tagen ago

GenKI-Fortbildung immer noch Mangelware

Fast jedes zweite Unternehmen bietet keinerlei Schulungen an. In den übrigen Betrieben profitieren oft nur…

2 Tagen ago

Netzwerk-Portfolio für das KI-Zeitalter

Huawei stellt auf der Connect Europe 2024 in Paris mit Xinghe Intelligent Network eine erweiterte…

2 Tagen ago

Internet-Tempo in Deutschland: Viel Luft nach oben

Höchste Zeit für eine schnelle Kupfer-Glas-Migration. Bis 2030 soll in Deutschland Glasfaser flächendeckend ausgerollt sein.

2 Tagen ago

Erste Entwickler-Preview von Android 16 verfügbar

Schon im April 2025 soll Android 16 den Status Plattformstabilität erreichen. Entwicklern gibt Google danach…

2 Tagen ago

Kaspersky warnt vor Cyberangriff auf PyPI-Lieferkette

Die Hintermänner setzen KI-Chatbot-Tools als Köder ein. Opfer fangen sich den Infostealer JarkaStealer ein.

3 Tagen ago