Convertir XML en dictionnaire en Python
-
Utilisez le module
xmltodict
pour convertir une chaîne XML en un dictionnaire en Python -
Utilisez la bibliothèque
cElemenTree
pour convertir une chaîne XML en dictionnaire en Python
XML est connu sous le nom de langage de balisage extensible. Il est utilisé pour stocker et transporter des quantités de données petites à moyennes, et il est également largement utilisé pour partager des informations structurées. Python nous permet d’analyser et de modifier les documents XML.
Dans ce tutoriel, nous montrerons comment convertir une chaîne XML en un dictionnaire en Python.
Utilisez le module xmltodict
pour convertir une chaîne XML en un dictionnaire en Python
xmltodict
est un module en Python qui donne l’impression que le travail avec XML ressemble à JSON. En raison de la structure de XML, il peut être facilement converti en dictionnaire à l’aide de ce module.
Voir l’extrait de code ci-dessous.
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)
Production:
OrderedDict([('student', OrderedDict([('id', 'DEL'), ('name', 'Jack'), ('email', 'jack@example.com'), ('smeseter', '8'), ('class', 'CSE'), ('cgpa', '7.5')]))])
Ici, nous pouvons voir que le résultat est sous la forme d’un dictionnaire ordonné. Un dictionnaire ordonné préserve l’ordre des paires clé-valeur dans un dictionnaire. La fonction parse()
analyse ici les données XML dans un dictionnaire ordonné.
Utilisez la bibliothèque cElemenTree
pour convertir une chaîne XML en dictionnaire en Python
cElementTree
est une bibliothèque Python essentielle nous permettant d’analyser et de parcourir un document XML. Avec cElementTree
, nous pouvons décomposer le document XML en une structure arborescente avec laquelle il est facile de travailler.
Nous allons créer notre propre fonction pour analyser les données XML et les convertir en dictionnaire. Nous utiliserons un objet de classe deafultdict
du module collections
pour obtenir le résultat final sous la forme souhaitée.
Voir le code suivant.
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)
Production:
{'student': {'id': 'DEL', 'name': 'Jack', 'email': 'jack@example.com', 'smeseter': '8', 'class': 'CSE', 'cgpa': '7.5'}}
Notez qu’il s’agit d’une arborescence d’un dictionnaire. Notez que le dictionnaire final est généralement un dictionnaire imbriqué dans les deux méthodes. Cela est dû à la structure du XML.
Article connexe - Python Dictionary
- Comment vérifier si une clé existe dans un dictionnaire en Python
- Convertir un dictionnaire en liste en Python
- Comment obtenir tous les fichiers d'un répertoire
- Comment trouver la valeur maximale dans le dictionnaire Python
- Comment trier un dictionnaire Python par valeur
- Comment fusionner deux dictionnaires en Python 2 et 3