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.")