Python XML Parsing : Un guide complet

XML (Extensible Markup Language) est un langage populaire utilisé pour le stockage et le transfert de données. Python fournit plusieurs bibliothèques pour analyser le XML. Dans ce guide, nous allons vous présenter deux bibliothèques Python intégrées pour analyser XML : xml.dom.minidom et xml.etree.ElementTree.

Étape 1 : Analyse XML à l'aide de xml.dom.minidom

La bibliothèque xml.dom.minidom vous permet d'analyser des documents XML avec Python. Pour analyser une chaîne XML, utilisez la méthode parseString :

from xml.dom.minidom import parseString

xml_string = """
<library>
 <book>
   <title>The Great Gatsby</title>
   <author>F. Scott Fitzgerald</author>
   <year>1925</year>
 </book>
</library>
"""

document = parseString(xml_string)
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)

Dans le code ci-dessus, nous analysons la chaîne XML et extrayons le titre du livre.

Étape 2 : Analyse XML à l'aide de xml.etree.ElementTree

La bibliothèque xml.etree.ElementTree (ET) fournit une manière plus pythonique d'analyser XML. Pour analyser une chaîne XML, utilisez la méthode fromstring :

import xml.etree.ElementTree as ET

xml_string = """
<library>
 <book>
   <title>The Great Gatsby</title>
   <author>F. Scott Fitzgerald</author>
   <year>1925</year>
 </book>
</library>
"""

root = ET.fromstring(xml_string)
for child in root.iter():
   if child.text.strip():
       print(child.text)

Dans le code ci-dessus, nous analysons la chaîne XML et imprimons le texte de chaque élément.

Étape 3 : Analyse des fichiers XML

Minidom et ElementTree peuvent tous deux analyser du XML à partir de fichiers à l'aide de la méthode parse :

# Using minidom
from xml.dom.minidom import parse
document = parse("sample.xml")
print(document.getElementsByTagName("title")[0].firstChild.nodeValue)

# Using ElementTree
import xml.etree.ElementTree as ET
root = ET.parse("sample.xml")
for child in root.iter():
   if child.text.strip():
       print(child.text)

Le code ci-dessus montre comment analyser un fichier XML et imprimer certains éléments.

Étape 4 : Enregistrement des données XML dans un fichier CSV

Après avoir analysé le XML, vous pouvez enregistrer les données dans un fichier CSV à l'aide de la bibliothèque pandas :

import pandas as pd

parsed_dict = {
    "title": ["The Great Gatsby"],
    "author": ["F. Scott Fitzgerald"],
    "year": [1925]
}

df = pd.DataFrame(parsed_dict)
df.to_csv("parsed_xml_data.csv", index=False)

Étape 5 : Traitement des données XML non valides

La bibliothèque Beautiful Soup peut analyser des documents XML qui peuvent contenir des erreurs :

from bs4 import BeautifulSoup

invalid_xml = """
<root>
 <person>
  <name>John Doe</name>
  <message>This is a message & an invalid XML example.</message>
 </person>
</root>
"""

soup = BeautifulSoup(invalid_xml, features="lxml-xml")
print(soup.prettify())

Beautiful Soup peut traiter des documents XML non valides, mais elle est plus lente que d'autres bibliothèques d'analyse XML.

FAQ

Utilisez la bibliothèque xmltodict. Il s'agit d'une bibliothèque légère qui donne à XML l'impression de travailler avec JSON.

xml.dom.minidom est une implémentation du Document Object Model, tandis que xml.etree.ElementTree fournit une API légère et Pythonique pour l'analyse et la création de XML.

Envisagez d'utiliser la méthode iterparse de la bibliothèque xml.etree.ElementTree. Elle est plus efficace en termes de mémoire car elle parcourt le fichier XML au lieu de charger l'intégralité du fichier en mémoire.

Les erreurs les plus courantes sont les erreurs de format XML et les erreurs de codage. Vous pouvez utiliser des outils tels qu'un validateur XML pour vous assurer que votre XML est bien formé, et spécifier le bon encodage lorsque vous ouvrez votre fichier XML.

xml.dom.minidom et xml.etree.ElementTree prennent tous deux en charge les espaces de noms. Consultez la documentation officielle de Python pour des exemples de gestion des espaces de noms.

Commentaires (0)

Il n'y a pas encore de commentaires ici, vous pouvez être le premier !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *


Choisir et acheter une procuration

Proxies pour centres de données

Procurations tournantes

Proxies UDP

Approuvé par plus de 10 000 clients dans le monde

Client mandataire
Client mandataire
Client proxy flowch.ai
Client mandataire
Client mandataire
Client mandataire