Maîtriser le Parsing XML en Python : Guide Pratique avec Minidom et ElementTree
Qu'est-ce que XML ?
XML, ou eXtensible Markup Language, a été créé pour stocker et transporter des données structurées efficacement. Il est largement utilisé pour échanger des informations entre systèmes et applications.
Python fournit des bibliothèques robustes pour parser et manipuler des documents XML. Cependant, pour parser un fichier XML, le document entier doit d'abord être chargé en mémoire. Dans ce tutoriel nous démontrerons comment utiliser les modules xml.dom.minidom et xml.etree.ElementTree de Python pour lire, inspecter et modifier des fichiers XML.
À la fin de ce guide vous saurez :
- Parser XML avec
minidom - Créer de nouveaux nœuds XML
- Parser XML avec
ElementTree
Parsing XML avec minidom
Nous commençons avec un fichier XML exemple contenant des données d'employés. Le fichier ressemble à ceci :
Étape 1) Le fichier liste le prénom, nom, domicile et domaines d'expertise d'un employé tels que SQL, Python, Testing, et Business.

Étape 2) Après chargement du document, nous afficherons le nodeName de l'élément racine et le tagName de son premier enfant. Ce sont des propriétés standards d'un objet DOM.

- Importer
xml.dom.minidomet charger le fichier XML (myxml.xml). - Parser le fichier avec
parse()pour obtenir un objet document. - Récupérer et afficher le
nodeNamedu document et letagNamedu premier enfant. - Utiliser
getElementsByTagName()pour lister tous les élémentsexpertiseet afficher chaque compétence.
Note : Les valeurs nodeName et tagName suivent les conventions de nommage XML DOM, qui peuvent être unfamiliar si vous êtes nouveau dans XML.
Étape 3) Nous pouvons extraire une liste de toutes les compétences du document. Le code suivant montre comment rassembler les noms de compétences dans un ensemble.

- Utiliser
getElementsByTagName("skill")pour récupérer tous les éléments skill. - Itérer sur la liste retournée et afficher l'attribut
namede chaque skill.
Créer un Nouveau Nœud XML
Ajouter de nouvelles données à une structure XML existante est simple avec minidom. Dans notre exemple, nous ajouterons un nouveau nœud expertise intitulé « BigData ».
- Créer le nouvel élément avec
createElement("expertise")et définir son attributname. - Ajouter le nouvel élément à l'enfant racine du document.

- Après insertion, la liste
expertiseinclut maintenant la nouvelle compétence « BigData ».
Exemple de Parser XML
Exemple Python 2
import xml.dom.minidom
def main():
# Charger et parser le fichier XML
doc = xml.dom.minidom.parse("Myxml.xml")
# Afficher infos racine
print doc.nodeName
print doc.firstChild.tagName
# Lister entrées expertise existantes
expertise = doc.getElementsByTagName("expertise")
print "%d expertise:" % expertise.length
for skill in expertise:
print skill.getAttribute("name")
# Ajouter nouvelle entrée expertise
newexpertise = doc.createElement("expertise")
newexpertise.setAttribute("name", "BigData")
doc.firstChild.appendChild(newexpertise)
print " "
# Vérifier ajout
expertise = doc.getElementsByTagName("expertise")
print "%d expertise:" % expertise.length
for skill in expertise:
print skill.getAttribute("name")
if __name__ == "__main__":
main()
Exemple Python 3
import xml.dom.minidom
def main():
# Charger et parser le fichier XML
doc = xml.dom.minidom.parse("Myxml.xml")
# Afficher infos racine
print(doc.nodeName)
print(doc.firstChild.tagName)
# Lister entrées expertise existantes
expertise = doc.getElementsByTagName("expertise")
print("%d expertise:" % expertise.length)
for skill in expertise:
print(skill.getAttribute("name"))
# Ajouter nouvelle entrée expertise
newexpertise = doc.createElement("expertise")
newexpertise.setAttribute("name", "BigData")
doc.firstChild.appendChild(newexpertise)
print(" ")
# Vérifier ajout
expertise = doc.getElementsByTagName("expertise")
print("%d expertise:" % expertise.length)
for skill in expertise:
print(skill.getAttribute("name"))
if __name__ == "__main__":
main()
Parsing XML avec ElementTree
ElementTree est une API légère qui rend la manipulation XML simple et pythonique. Elle est idéale pour lire de gros fichiers XML sans la surcharge d'un DOM complet.
Nos données XML exemple :
<data>
<items>
<item name="expertise1">SQL</item>
<item name="expertise2">Python</item>
</items>
</data>
Lecture XML avec ElementTree :
D'abord, importez le module :
import xml.etree.ElementTree as ET
Parsez le fichier et obtenez l'élément racine :
tree = ET.parse('items.xml')
root = tree.getroot()
Voici le code complet pour afficher tous les noms de compétences :
import xml.etree.ElementTree as ET
tree = ET.parse('items.xml')
root = tree.getroot()
print('Données Expertise :')
for elem in root:
for subelem in elem:
print(subelem.text)
Sortie :
Données Expertise : SQL Python
Résumé
Les modules xml.dom.minidom et xml.etree.ElementTree de Python permettent aux développeurs de charger, analyser et modifier des documents XML efficacement. Alors que minidom fournit une représentation DOM complète adaptée aux manipulations complexes, ElementTree offre une alternative légère pour parsing et extraction simples.
- Charger XML avec
parse()(ex:doc = xml.dom.minidom.parse(file)). - Utiliser
getElementsByTagName()pour récupérer éléments. - Créer et ajouter nouveaux nœuds avec
createElement()etappendChild(). - Avec ElementTree, simplement itérer sur éléments enfants pour accéder aux données.
Python
- Entrées/sorties de fichiers Python : maîtriser les opérations sur les fichiers
- Lecture de Fichiers en Java avec BufferedReader – Guide Pratique avec Exemples
- Maîtriser la méthode strip() de Python : Guide complet et exemples pratiques
- Python len() : Guide pratique pour mesurer la longueur des objets
- Maîtriser yield en Python : générateur vs return – Guide pratique
- Python Counter dans collections : comptage efficace, mise à jour et opérations arithmétiques
- Maîtriser enumerate() en Python : boucler avec indices pour listes, tuples, chaînes et dictionnaires
- Vérifier l'existence de fichiers et répertoires en Python – Guide pratique
- Python JSON : encodage, décodage et gestion de fichiers – Guide pratique