Python Fichier XML – Comment lire, écrire et analyser
Qu'est-ce que XML?
XML signifie eXtensible Markup Language. Il a été conçu pour stocker et transporter des quantités petites à moyennes de données et est largement utilisé pour partager des informations structurées.
Python vous permet d'analyser et de modifier des documents XML. Afin d'analyser un document XML, vous devez disposer de l'intégralité du document XML en mémoire. Dans ce tutoriel, nous verrons comment utiliser la classe XML minidom dans Python pour charger et analyser des fichiers XML.
Comment analyser XML à l'aide de minidom
Nous avons créé un exemple de fichier XML que nous allons analyser.
Étape 1) Créer un exemple de fichier XML
À l'intérieur du fichier, nous pouvons voir le prénom, le nom, le domicile et le domaine d'expertise (SQL, Python, Tests et Affaires)
Étape 2) Utilisez la fonction d'analyse pour charger et analyser le fichier XML
Une fois que nous aurons analysé le document, nous imprimerons le "nom du nœud" de la racine du document et le "prénom du premier enfant ». Tagname et nodename sont les propriétés standard du fichier XML.
- Importez le module xml.dom.minidom et déclarez le fichier à analyser (myxml.xml)
- Ce fichier contient des informations de base sur un employé comme son prénom, son nom, son domicile, son expertise, etc.
- Nous utilisons la fonction parse sur le minidom XML pour charger et analyser le fichier XML
- Nous avons la variable doc et doc obtient le résultat de la fonction d'analyse
- Nous voulons imprimer le nom du nœud et le nom de la balise enfant du fichier, nous le déclarons donc dans la fonction d'impression
- Exécutez le code : il imprime le nom du nœud (#document) du fichier XML et le premier nom de balise enfant (employé) du fichier XML.
Remarque :
Le nom de nœud et le nom de balise enfant sont les noms ou propriétés standard d'un dom XML.
Étape 3) Appelez la liste des balises XML du document XML et imprimez-la
Ensuite, nous pouvons également appeler la liste des balises XML du document XML et l'imprimer. Ici, nous avons imprimé l'ensemble des compétences telles que SQL, Python, Contrôle de qualité et Affaires.
- Déclarons l'expertise variable, à partir de laquelle nous allons extraire toute l'expertise dont dispose l'employé nommé
- Utilisez la fonction standard dom appelée « getElementsByTagName »
- Cela obtiendra tous les éléments nommés compétence
- Déclarez une boucle sur chacune des balises de compétence
- Exécutez le code - Il donnera une liste de quatre compétences
Comment écrire un nœud XML
Nous pouvons créer un nouvel attribut en utilisant la fonction « createElement », puis ajouter ce nouvel attribut ou balise aux balises XML existantes. Nous avons ajouté une nouvelle balise « BigData » dans notre fichier XML.
- Vous devez coder pour ajouter le nouvel attribut (BigData) à la balise XML existante
- Ensuite, vous devez imprimer la balise XML avec de nouveaux attributs ajoutés à la balise XML existante
- Pour ajouter un nouveau XML et l'ajouter au document, nous utilisons le code « doc.create elements »
- Ce code créera une nouvelle balise de compétence pour notre nouvel attribut « Big-data »
- Ajoutez cette balise de compétence dans le document premier enfant (employé)
- Exécutez le code – la nouvelle balise « big data » apparaîtra avec l’autre liste d’expertises
Exemple d'analyseur XML
Python 2 Exemple
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print doc.nodeName print doc.firstChild.tagName # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") #Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print " " expertise = doc.getElementsByTagName("expertise") print "%d expertise:" % expertise.length for skill in expertise: print skill.getAttribute("name") if name == "__main__": main();
Python 3 Exemple
import xml.dom.minidom def main(): # use the parse() function to load and parse an XML file doc = xml.dom.minidom.parse("Myxml.xml"); # print out the document node and the name of the first child tag print (doc.nodeName) print (doc.firstChild.tagName) # get a list of XML tags from the document and print each one expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) # Write a new XML tag and add it into the document newexpertise = doc.createElement("expertise") newexpertise.setAttribute("name", "BigData") doc.firstChild.appendChild(newexpertise) print (" ") expertise = doc.getElementsByTagName("expertise") print ("%d expertise:" % expertise.length) for skill in expertise: print (skill.getAttribute("name")) if __name__ == "__main__": main();
Comment analyser XML à l'aide d'ElementTree
ElementTree est une API pour manipuler XML. ElementTree est le moyen simple de traiter les fichiers XML.
Nous utilisons le document XML suivant comme exemple de données :
<data> <items> <item name="expertise1">SQL</item> <item name="expertise2">Python</item> </items> </data>
Lecture de XML à l'aide d'ElementTree :
il faut d'abord importer le module xml.etree.ElementTree.
import xml.etree.ElementTree as ET
Récupérons maintenant l'élément racine :
root = tree.getroot()
Voici le code complet pour lire les données XML ci-dessus
import xml.etree.ElementTree as ET tree = ET.parse('items.xml') root = tree.getroot() # all items data print('Expertise Data:') for elem in root: for subelem in elem: print(subelem.text)
sortie:
Expertise Data: SQL Python
Résumé
Python vous permet d'analyser l'intégralité du document XML en une seule fois et pas seulement une ligne à la fois. Afin d'analyser un document XML, vous devez avoir l'intégralité du document en mémoire.
- Pour analyser un document XML
- Importer xml.dom.minidom
- Utilisez la fonction « parse » pour analyser le document ( doc=xml.dom.minidom.parse (nom du fichier) ;
- Appelez la liste des balises XML du document XML en utilisant le code (=doc.getElementsByTagName( « nom des balises XML »)
- Pour créer et ajouter un nouvel attribut dans un document XML
- Utilisez la fonction « createElement »