Tutorials  /  Python

Python XML zu JSON, XML zu Dict konvertieren

Ccentron Redaktion · Februar 2024 ·5 Min. Lesezeit ·Python, Tutorial

Heute lernen wir, wie man XML in Python in JSON und Dict umwandelt. Wir können das Python-Modul xmltodict verwenden, um XML-Dateien zu lesen und sie in Dict oder JSON-Daten umzuwandeln. Wir können auch große XML-Dateien streamen und sie in ein Dictionary umwandeln. Bevor wir zum Programmier-Teil übergehen, verstehen wir zuerst, warum die XML-Umwandlung notwendig ist.

XML zu JSON konvertieren / XML zu Dict konvertieren

XML-Dateien sind langsam veraltet, aber es gibt immer noch ziemlich große Systeme im Web, die dieses Format verwenden. XML ist schwerer als JSON und daher bevorzugen die meisten Entwickler letzteres in ihren Anwendungen. Wenn Anwendungen das von einer beliebigen Quelle bereitgestellte XML verstehen müssen, kann es mühsam sein, es in JSON umzuwandeln. Das Modul xmltodict in Python macht diese Aufgabe extrem einfach und unkompliziert.

VM

Passende Infrastruktur bei centron

Skripte und Dienste brauchen irgendwann eine Umgebung, die durchläuft: ccloud³ VMs ab 3,12 € im Monat, stundengenau abgerechnet. Cloud Server mieten →

Erste Schritte mit xmltodict

Wir können mit dem Modul xmltodict beginnen, müssen es aber zuerst installieren. Wir verwenden hauptsächlich pip, um die Installation durchzuführen.

Installation des xmltodict-Moduls

Hier ist, wie wir das xmltodict-Modul mit dem Python Package Index (pip) installieren können:

Konsole
pip install xmltodict

Das Beste an dieser Installation war, dass dieses Modul von keinem anderen externen Modul abhängt und daher leichtgewichtig ist und Versionskonflikte vermeidet. Um es zu demonstrieren, kann dieses Modul auf Debian-basierten Systemen einfach mit dem apt-Tool installiert werden:

Konsole
sudo apt install python-xmltodict

Ein weiterer Pluspunkt ist, dass dieses Modul ein offizielles Debian-Paket hat.

Python XML zu JSON

Der beste Startpunkt, um dieses Modul auszuprobieren, wäre die Durchführung einer Operation, für die es hauptsächlich entwickelt wurde, nämlich die Umwandlung von XML in JSON. Schauen wir uns einen Code-Ausschnitt an, wie dies gemacht werden kann:

Python
import xmltodict
import pprint
import json

my_xml = """
    <audience>
      <id what="attribute">123</id>
      <name>Shubham</name>
    </audience>
"""

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(xmltodict.parse(my_xml)))

XML zu JSON konvertieren

XML-Daten immer im Code selbst zu behalten, ist weder immer möglich noch realistisch. Normalerweise speichern wir unsere Daten entweder in einer Datenbank oder in einigen Dateien. Wir können Dateien direkt auswählen und sie in JSON umwandeln. Schauen wir uns an, wie wir die Umwandlung mit einer XML-Datei durchführen können:

Python
import xmltodict
import pprint
import json

with open('person.xml') as fd:
    doc = xmltodict.parse(fd.read())

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(doc))

Python XML zu Dict konvertieren

Wie der Modulname selbst andeutet, wandelt xmltodict die von uns bereitgestellten XML-Daten tatsächlich in ein einfaches Python-Dictionary um. So können wir auch einfach auf die Daten mit den Dictionary-Schlüsseln zugreifen. Hier ist ein Beispielprogramm:

Python
import xmltodict
import pprint
import json

my_xml = """
    <audience>
      <id what="attribute">123</id>
      <name>Shubham</name>
    </audience>
"""
my_dict = xmltodict.parse(my_xml)
print(my_dict['audience']['id'])
print(my_dict['audience']['id']['@what'])

Unterstützung von Namespaces in XML

In XML-Daten haben wir normalerweise eine Reihe von Namespaces, die den Geltungsbereich der von der XML-Datei bereitgestellten Daten definieren. Bei der Umwandlung ins JSON-Format ist es dann notwendig, dass diese Namespaces im JSON-Format ebenfalls bestehen bleiben. Betrachten wir diese Beispiel-XML-Datei:

Code
<root xmlns="https://defaultns.com/"
        xmlns:a="https://a.com/">
    <audience>
        <id what="attribute">123</id>
        <name>Shubham</name>
    </audience>
</root>

Hier ist ein Beispielprogramm, wie wir XML-Namespaces auch im JSON-Format einbeziehen können:

Python
import xmltodict
import pprint
import json

with open('person.xml') as fd:
    doc = xmltodict.parse(fd.read(), process_namespaces=True)

pp = pprint.PrettyPrinter(indent=4)
pp.pprint(json.dumps(doc))

JSON-zu-XML-Umwandlung

Obwohl die Umwandlung von XML in JSON das Hauptziel dieses Moduls ist, unterstützt xmltodict auch die umgekehrte Operation, die Umwandlung von JSON in XML-Form. Wir werden die JSON-Daten im Programm selbst bereitstellen. Hier ist ein Beispielprogramm:

Python
import xmltodict

student = {
  "data" : {
    "name" : "Shubham",
    "marks" : {
      "math" : 92,
      "english" : 99
    },
    "id" : "s387hs3"
  }
}

print(xmltodict.unparse(student, pretty=True))

Bitte beachten Sie, dass das Bereitstellen eines einzelnen JSON-Schlüssels notwendig ist, damit dies korrekt funktioniert. Wenn wir in Betracht ziehen, dass wir unser Programm so ändern, dass es mehrere JSON-Schlüssel auf der allerersten Datenebene enthält:

Python
import xmltodict

student = {
    "name" : "Shubham",
    "marks" : {
        "math" : 92,
        "english" : 99
    },
    "id" : "s387hs3"
}

print(xmltodict.unparse(student, pretty=True))

In diesem Fall haben wir drei Schlüssel auf der obersten Ebene. Wenn wir versuchen, diese Form von JSON umzuwandeln, werden wir auf einen Fehler stoßen. Dies liegt daran, dass xmltodict versucht, das JSON mit dem allerersten Schlüssel als root XML-Tag zu konstruieren. Das bedeutet, dass auf der obersten Datenebene nur ein einzelner JSON-Schlüssel vorhanden sein sollte.

Schlussfolgerung

In dieser Lektion haben wir ein ausgezeichnetes Python-Modul untersucht, das zum Parsen und Umwandeln von XML in JSON und umgekehrt verwendet werden kann. Wir haben auch gelernt, wie man XML in Dict mit dem xmltodict-Modul umwandelt.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie Python
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren