Tutoriel Python XML Parser :lire un exemple de fichier xml (Minidom, ElementTree)
Qu'est-ce que XML ?
XML signifie eXtensible Markup Language. Il a été conçu pour stocker et transporter de petites à moyennes quantités de données et est largement utilisé pour partager des informations structurées.
Python vous permet d'analyser et de modifier un document XML. Pour analyser un document XML, vous devez avoir le document XML entier en mémoire. Dans ce didacticiel, nous verrons comment utiliser la classe XML minidom en Python pour charger et analyser un fichier XML.
Dans ce tutoriel, nous allons apprendre-
- Comment analyser XML en utilisant minidom
- Comment créer un nœud XML
- Comment analyser XML à l'aide d'ElementTree
Comment analyser XML en utilisant minidom
Nous avons créé un exemple de fichier XML que nous allons analyser.
Étape 1) À l'intérieur du fichier, on peut voir le prénom, le nom, la maison et le domaine d'expertise (SQL, Python, Testing et Business)
Étape 2) Une fois que nous aurons analysé le document, nous imprimerons le "nom du nœud" de la racine du document et du "premier tagname enfant" . Tagname et nodename sont les propriétés standard du fichier XML.
- Importez le module xml.dom.minidom et déclarez le fichier qui doit être analysé (myxml.xml)
- Ce fichier contient des informations de base sur l'employé comme le prénom, le nom, le domicile, l'expertise, etc.
- Nous utilisons la fonction d'analyse 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 à partir du fichier, nous le déclarons donc dans la fonction d'impression
- Exécutez le code - Il imprime le nom du nœud (#document) à partir du fichier XML et le premier tagname enfant (employé) à partir du fichier XML
Remarque :
Nodename et child tagname sont les noms ou propriétés standard d'un dom XML. Au cas où vous ne seriez pas familier avec ce type de conventions de nommage.
Étape 3) Nous pouvons également appeler la liste des balises XML à partir du document XML et l'imprimer. Ici, nous avons imprimé l'ensemble des compétences telles que SQL, Python, Testing et Business.
- Déclarez l'expertise variable, à partir de laquelle nous allons extraire toute l'expertise du nom de l'employé
- Utilisez la fonction standard dom appelée "getElementsByTagName"
- Cela obtiendra tous les éléments nommés skill
- Déclarer une boucle sur chacune des balises de compétence
- Exécutez le code - Il vous donnera une liste de quatre compétences
Comment créer un nœud XML
Nous pouvons créer un nouvel attribut en utilisant la fonction "createElement", puis ajouter ce nouvel attribut ou cette nouvelle 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'expertise
Exemple d'analyseur XML
Exemple Python 2
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") # create 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();
Exemple Python 3
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")) # create 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 le plus 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 XML à l'aide d'ElementTree :
nous devons 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 le document entier 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 à partir du document XML à l'aide du code (=doc.getElementsByTagName( "nom des balises xml")
- Pour créer et ajouter un nouvel attribut dans un document XML
- Utiliser la fonction "createElement"
Python
- E/S de fichier Python
- Java BufferedReader :comment lire un fichier en Java avec un exemple
- Python String strip() Fonction avec EXAMPLE
- Longueur de la chaîne Python | Méthode len() Exemple
- Rendement en Python Tutoriel :Exemple de générateur et rendement vs retour
- Compteur Python dans les collections avec exemple
- Fonction Enumerate() en Python :boucle, tuple, chaîne (exemple)
- Python vérifie si le fichier existe | Comment vérifier si un répertoire existe en Python
- Python JSON :encoder (dumps), décoder (chargers) et lire le fichier JSON