Python créer un fichier xml

Comprendre les fichiers xml et savoir les créer en langage python pour automatiser.Les fichiers xml sont fréquemment utilisés afin d’organiser des données dans un fichier. Ils sont plus commodes que de simple fichier texte, car il sont organisé grâce a des balises, comme le fait le HTML.

Vous pouvez trouver un lien intéressant sur la manipulation des fichiers en python malheureusement en anglais => guru99.

Voici deux autres articles en lien direct avec celui-ci :

XML ou eXtensible Markup Language

Le XML ou eXtensible Markup Language (pour un peu plus familier avec notre charmant ami) est un langage de description comme l’est le HTML. On ne va pas exécuter de script mais il va permettre d’ordonner et de décrire correctement un contenu.

Nous allons utiliser un système composé de paire de balise qui peuvent s’imbriquer, en gardant en tête que la première ouverte sera la dernière fermée :

<annuaire>
   <personne>
      <nom>Durant</nom>
      <prenom>Pierre</prenom>
      <telephone type="mobile">118.218</telephone>
   </personne>
   <personne>
      <nom>Martin</nom>
      <prenom>Ingride</prenom>
      <telephone type="fixe">18</telephone>
   </personne>
</annuaire>

Voilà qui paraît au final simple à comprendre.

Création en python du xml

Nous allons utiliser le module lxml, pour l’installer, pour Linux, saisir dans un terminal :

sudo apt-get install python-lxml

Normalement, tout devrait déjà être installé.

Nous allons reprendre l’exemple du fichier xml plus haut.

Pour faire quelque-chose de simple, j’ai placé des commentaires qui détaillent les grandes étapes

# coding: utf8
#Prenez l'habitude d'encoder votre fichier en UTF8 avec la migne au-dessus

#Iport du module
from lxml import etree

#Création de la racine de notre document
annuaire = etree.Element('annuaire')

#telephone = etree.SubElement(personne,'telephone')

#Les deux personnes de ma liste
liste = [['Durant','Pierre','','118.218'],['Martin','Ingride','18','']]

numero = 0
for perso in liste:
        #Création de la nouvelle personne
        personne = etree.SubElement(annuaire,'personne')
        personne.set('id',bytes(numero))
        #Nom
        nom = etree.SubElement(personne,'nom')
        nom.text = perso[0]
        #prenom
        prenom = etree.SubElement(personne,'prenom')
        prenom.text = perso[1]
        #Téléphone fixe
        if perso[2] != '':
                telephone = etree.SubElement(personne,'telephone')
                telephone.set('type','fixe')
                telephone.text = perso[2]
        #Téléphone mobile
        if perso[3] != '':
                telephone = etree.SubElement(personne,'telephone')
                telephone.set('type','mobile')
                telephone.text = perso[3]
        numero += 1

try:
        #On ouvre (ou crée) le fichier xml pour travailler avec
        with open('annuaire.xml','w') as fichier:
                #En-tête du fichier xml
                fichier.write('<?xml version="1.0" encoding="UTF_8"?>\n')
                #On écrit tous les éléments précédemment déclarer
                fichier.write(etree.tostring(annuaire,pretty_print=True).decode('utf-8'))
except IOError:
        print('Problème rencontré lors de l\'écriture ...')
        exit(1)

Vous allez obtenir dans le dossier où vous êtes un fichier nommé annuaire.xml, contenant :

<?xml version="1.0" encoding="UTF_8"?>
<annuaire>
  <personne id="0">
    <nom>Durant</nom>
    <prenom>Pierre</prenom>
    <telephone type="mobile">118.218</telephone>
  </personne>
  <personne id="1">
    <nom>Martin</nom>
    <prenom>Ingride</prenom>
    <telephone type="fixe">18</telephone>
  </personne>
</annuaire>

Voilà vous savez maintenant créer un fichier xml, ne reste plus qu’à savoir lire un fichier xml et le modifier, à voir dans un prochain tutoriel qui ne devrait pas tarder.

N’hésiter pas à commenter et à partager.

Laisser un commentaire