Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Formats de fichiers populaires

APERTO-NOTA

Format de fichier XML

Lire et écrire un fichier XML en Python peut se faire avec le module intégré xml.etree.ElementTree. Le format XML est hiérarchique et structuré, souvent utilisé pour représenter des données complexes ou échanger des informations entre systèmes.

Exemple de lecture

import xml.etree.ElementTree as ET

arbre = ET.parse('exemple.xml')
racine = arbre.getroot()

for utilisateur in racine.findall('utilisateur'):
    print(utilisateur.find('nom').text)

Exemple d’écriture

import xml.etree.ElementTree as ET

racine = ET.Element('utilisateurs')

u1 = ET.SubElement(racine, 'utilisateur')
ET.SubElement(u1, 'nom').text = 'Alice'
ET.SubElement(u1, 'email').text = 'alice@example.com'

arbre = ET.ElementTree(racine)
arbre.write('exemple.xml', encoding='utf-8', xml_declaration=True)

Ces exemples montrent comment manipuler des fichiers XML pour structurer des données de manière hiérarchique, avec des balises personnalisées.

Exercice

Solution to Exercise 1 #
import xml.etree.ElementTree as ET

# 1. Lecture du fichier XML
arbre = ET.parse('users.xml')
racine = arbre.getroot()

# 2. Extraction des utilisateurs
utilisateurs = []
for u in racine.findall('utilisateur'):
    utilisateurs.append({
        'id': u.find('id').text,
        'nom': u.find('nom').text,
        'email': u.find('email').text
    })

# 3. Affichage
print("Utilisateurs existants :")
for u in utilisateurs:
    print(u)

# 4. Ajout d'un nouvel utilisateur
utilisateurs.append({'id': '4', 'nom': 'David', 'email': 'david@example.com'})

# 5. Bonus : tri par nom
utilisateurs.sort(key=lambda x: x['nom'])

# 6. Réécriture du fichier XML
nouvelle_racine = ET.Element('utilisateurs')
for u in utilisateurs:
    utilisateur = ET.SubElement(nouvelle_racine, 'utilisateur')
    ET.SubElement(utilisateur, 'id').text = u['id']
    ET.SubElement(utilisateur, 'nom').text = u['nom']
    ET.SubElement(utilisateur, 'email').text = u['email']

nouvel_arbre = ET.ElementTree(nouvelle_racine)
nouvel_arbre.write('users.xml', encoding='utf-8', xml_declaration=True)

print("\nNouvel utilisateur ajouté et fichier mis à jour.")