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

Apple meldet Umsatz- und Gewinnrückgang im zweiten Fiskalquartal

iPhones und iPads belasten das Ergebnis. Außerdem schwächelt Apple im gesamten asiatischen Raum inklusive China…

3 Tagen ago

MadMxShell: Hacker verbreiten neue Backdoor per Malvertising

Die Anzeigen richten sich an IT-Teams und Administratoren. Ziel ist der Zugriff auf IT-Systeme.

3 Tagen ago

April-Patches für Windows legen VPN-Verbindungen lahm

Betroffen sind Windows 10 und Windows 11. Laut Microsoft treten unter Umständen VPN-Verbindungsfehler auf. Eine…

3 Tagen ago

AMD steigert Umsatz und Gewinn im ersten Quartal

Server-CPUs und Server-GPUs legen deutlich zu. Das Gaming-Segment schwächelt indes.

4 Tagen ago

Google stopft schwerwiegende Sicherheitslöcher in Chrome 124

Zwei Use-after-free-Bugs stecken in Picture In Picture und der WebGPU-Implementierung Dawn. Betroffen sind Chrome für…

5 Tagen ago

Studie: 91 Prozent der Ransomware-Opfer zahlen Lösegeld

Die durchschnittliche Lösegeldzahlung liegt bei 2,5 Millionen Dollar. Acht Prozent der Befragten zählten 2023 mehr…

5 Tagen ago