Konvertieren von XML in ein Dictionary in Python
-
Verwendung von das Modul
xmltodict
zum Konvertieren von XML-Strings in ein Dictionary in Python -
Verwendung von die Bibliothek
cElemenTree
zum Konvertieren von XML-Strings in ein Dictionary in Python
XML ist als Extensible Markup Language bekannt. Es wird verwendet, um kleine bis mittlere Datenmengen zu speichern und zu transportieren, und es wird auch häufig verwendet, um strukturierte Informationen auszutauschen. Python ermöglicht es uns, die XML-Dokumente zu analysieren und zu ändern.
In diesem Tutorial zeigen wir, wie Sie XML-Strings in Python in ein Dictionary konvertieren.
Verwendung von das Modul xmltodict
zum Konvertieren von XML-Strings in ein Dictionary in Python
xmltodict
ist ein Python-Modul, mit dem sich die Arbeit mit XML wie JSON anfühlt. Aufgrund der Struktur von XML kann es mit diesem Modul einfach in ein Dictionary umgewandelt werden.
Siehe das Code-Snippet unten.
import xmltodict
xml_data = """
<student>
<id>DEL</id>
<name> Jack </name>
<email>jack@example.com</email>
<smeseter>8</smeseter>
<class>CSE</class>
<cgpa> 7.5</cgpa>
</student>
"""
d = xmltodict.parse(xml_data)
print(d)
Ausgabe:
OrderedDict([('student', OrderedDict([('id', 'DEL'), ('name', 'Jack'), ('email', 'jack@example.com'), ('smeseter', '8'), ('class', 'CSE'), ('cgpa', '7.5')]))])
Hier sehen wir, dass das Ergebnis in Form eines geordneten Dictionaries vorliegt. Ein geordnetes Dictionary behält die Reihenfolge der Schlüssel-Wert-Paare in einem Dictionary bei. Die Funktion parse()
parst hier die XML-Daten in ein geordnetes Dictionary.
Verwendung von die Bibliothek cElemenTree
zum Konvertieren von XML-Strings in ein Dictionary in Python
cElementTree
ist eine wesentliche Python-Bibliothek, die es uns ermöglicht, ein XML-Dokument zu analysieren und zu navigieren. Mit cElementTree
können wir das XML-Dokument in eine einfach zu handhabende Baumstruktur zerlegen.
Wir werden unsere eigene Funktion erstellen, um die XML-Daten zu analysieren und in ein Dictionary zu konvertieren. Wir verwenden ein Objekt der Klasse deafultdict
aus dem Modul collections
, um das Endergebnis in unserer gewünschten Form zu erhalten.
Siehe den folgenden Code.
from collections import defaultdict
from xml.etree import cElementTree as ET
def xml2dict(t):
d = {t.tag: {} if t.attrib else None}
children = list(t)
if children:
dd = defaultdict(list)
for dc in map(etree_to_dict, children):
for k, v in dc.items():
dd[k].append(v)
d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}}
if t.attrib:
d[t.tag].update(("@" + k, v) for k, v in t.attrib.items())
if t.text:
text = t.text.strip()
if children or t.attrib:
if text:
d[t.tag]["#text"] = text
else:
d[t.tag] = text
return d
xml_data = ET.XML(
"""
<student>
<id>DEL</id>
<name> Jack </name>
<email>jack@example.com</email>
<smeseter>8</smeseter>
<class>CSE</class>
<cgpa> 7.5</cgpa>
</student>
"""
)
d = xml2dict(xml_data)
print(d)
Ausgabe:
{'student': {'id': 'DEL', 'name': 'Jack', 'email': 'jack@example.com', 'smeseter': '8', 'class': 'CSE', 'cgpa': '7.5'}}
Beachten Sie, dass dies eine Baumstruktur eines Dictionaries ist. Beachten Sie, dass das endgültige Dictionary in beiden Methoden normalerweise ein verschachteltes Dictionary ist. Dies liegt an der Struktur des XML.
Verwandter Artikel - Python Dictionary
- Wie man prüft, ob ein Schlüssel in einem Dictionary in Python vorhanden ist
- Konvertieren eines Dictionaries in eine Liste in Python
- So erhalten Sie alle Dateien eines Verzeichnisses
- Wie finde ich den Maximalwert im Python-Dictionary
- Wie man ein Python-Dictionary nach Wert sortiert
- Wie man zwei Wörterbücher in Python 2 und 3 zusammenführen kann