Konvertieren von XML in ein Dictionary in Python

Hemank Mehtani 18 Juli 2021
  1. Verwendung von das Modul xmltodict zum Konvertieren von XML-Strings in ein Dictionary in Python
  2. Verwendung von die Bibliothek cElemenTree zum Konvertieren von XML-Strings in ein Dictionary in Python
Konvertieren von XML 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

Verwandter Artikel - Python XML