Analyse XML en Python
Qu'est-ce que XML ?
XML fait référence à l'Extensible Markup Language (eXtensible Markup Lxtensible Markup Language).Tutoriel XML
XML est conçu pour transmettre et stocker des données.
XML est un ensemble de règles pour définir un balisage sémantique qui divise un document en plusieurs parties et identifie ces parties.
C'est aussi un méta-langage de balisage, c'est-à-dire un langage syntaxique utilisé pour définir d'autres langages de balisage sémantiques et structurés liés à des domaines spécifiques.
Analyse XML avec Python
Les interfaces de programmation XML courantes incluent DOM et SAX. Ces deux interfaces traitent les fichiers XML différemment et, bien sûr, elles sont utilisées dans des situations différentes.
Python propose trois méthodes pour analyser du XML : SAX, DOM et ElementTree :
1.SAX (API simple pour XML )
La bibliothèque standard de Python inclut un analyseur SAX. SAX utilise un modèle événementiel, en traitant les fichiers XML par déclenchement d'événements un par un pendant l'analyse XML et en appelant des fonctions de rappel définies par l'utilisateur.
2.DOM (Document Object Model)
Analyser les données XML en un arbre en mémoire, et opérer sur le XML en manipulant l'arbre.
3. ElementTree (arbre d'éléments)
ElementTree est comme un DOM léger avec une API pratique et conviviale. Il offre une bonne utilisabilité du code, une grande rapidité et une faible consommation de mémoire.
Remarque :Parce que DOM doit mapper les données XML vers un arbre en mémoire, il est relativement lent et gourmand en mémoire. SAX lit les fichiers XML en flux, ce qui est plus rapide et utilise moins de mémoire, mais nécessite que les utilisateurs implémentent des fonctions de rappel (gestionnaires).
Le contenu du fichier d'exemple XML movies.xml utilisé dans ce chapitre est le suivant :
movies.xml
Python utilise SAX pour analyser XML
SAX est une API événementielle.
L'analyse de documents XML avec SAX implique deux parties :AnalyseuretGestionnaire d'événements。
L'analyseur est chargé de lire le document XML et d'envoyer des événements au gestionnaire d'événements, tels que les événements de début et de fin d'élément.
Le gestionnaire d'événements est chargé de répondre aux événements et de traiter les données XML transmises.
- 1. Traiter des fichiers volumineux ;
- 2. N’avoir besoin que d’une partie du contenu du fichier, ou uniquement d’informations spécifiques provenant du fichier.
- 3. Lorsque vous souhaitez construire votre propre modèle objet.
Pour traiter du XML avec SAX en Python, vous devez d’abord importer la fonction parse depuis xml.sax et ContentHandler depuis xml.sax.handler.
Introduction aux méthodes de la classe ContentHandler
méthode characters(content)
Moment de l’invocation :
Depuis le début de la ligne, avant de rencontrer une balise, s’il y a des caractères, la valeur de content est constituée de ces chaînes.
À partir d’une balise, avant de rencontrer la balise suivante, s’il y a des caractères, la valeur de content est constituée de ces chaînes.
À partir d’une balise, avant de rencontrer le terminateur de ligne, s’il y a des caractères, la valeur de content est constituée de ces chaînes.
La balise peut être une balise de début ou une balise de fin.
méthode startDocument()
Appelée lorsque le document commence.
méthode endDocument()
Appelée lorsque le parseur atteint la fin du document.
méthode startElement(name, attrs)
Appelée lorsqu'une balise de début XML est rencontrée. name est le nom de la balise, et attrs est un dictionnaire des valeurs d'attributs de la balise.
méthode endElement(name)
Appelée lorsqu'une balise de fin XML est rencontrée.
méthode make_parser
La méthode suivante crée un nouvel objet parseur et le renvoie.
xml.sax.make_parser( [parser_list] )
Description du paramètre :
- parser_list- Paramètre facultatif, liste de parseurs
méthode parser
La méthode suivante crée un parseur SAX et analyse un document XML :
xml.sax.parse( xmlfile, contenthandler[, errorhandler])
Description du paramètre :
- xmlfile- nom du fichier XML
- contenthandler- Doit être un objet ContentHandler
- errorhandler- Si ce paramètre est spécifié, errorhandler doit être un objet SAX ErrorHandler
méthode parseString
La méthode parseString crée un analyseur XML et analyse une chaîne XML :
xml.sax.parseString(xmlstring, contenthandler[, errorhandler])
Description du paramètre :
- xmlstring- chaîne XML
- contenthandler- Doit être un objet ContentHandler
- errorhandler- Si ce paramètre est spécifié, errorhandler doit être un objet SAX ErrorHandler
Exemple d'analyse XML en Python
Exemple
Le résultat d'exécution du code ci-dessus est le suivant :
*****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Year: 2003 Rating: PG Stars: 10 Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Year: 1989 Rating: R Stars: 8 Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Stars: 10 Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Stars: 2 Description: Viewable boredom
Veuillez vous référer à la documentation complète de l'API SAXAPI SAX Python
Utilisation de xml.dom pour analyser du XML
Le Document Object Model (DOM) est une interface de programmation standard recommandée par le W3C pour le traitement du langage de balisage extensible.
Lorsqu'un analyseur DOM analyse un document XML, il lit l'intégralité du document en une seule fois et stocke tous les éléments dans une structure arborescente en mémoire. Ensuite, vous pouvez utiliser différentes fonctions fournies par DOM pour lire ou modifier le contenu et la structure du document, et vous pouvez également écrire le contenu modifié dans un fichier XML.
En Python, xml.dom.minidom est utilisé pour analyser des fichiers XML. Un exemple est le suivant :
Exemple
Le résultat de l'exécution du programme ci-dessus est le suivant :
Root element : New Arrivals *****Movie***** Title: Enemy Behind Type: War, Thriller Format: DVD Rating: PG Description: Talk about a US-Japan war *****Movie***** Title: Transformers Type: Anime, Science Fiction Format: DVD Rating: R Description: A schientific fiction *****Movie***** Title: Trigun Type: Anime, Action Format: DVD Rating: PG Description: Vash the Stampede! *****Movie***** Title: Ishtar Type: Comedy Format: VHS Rating: PG Description: Viewable boredom
Veuillez vous référer à la documentation complète de l'API DOMAPI DOM Python。
Autres extensions