Vous êtes sur la page 1sur 2

Université Abderrahmane Mira de Bejaia

Faculté des Sciences Exactes - Département d’Informatique


3e année Licence MI - Matière : Données semi-structurées 2021/2022

TP02 - Création et modification d’un document XML

L’objectif principal de ce 2e TP est de savoir comment créer un document XML à travers le parser
xml.etree.ElementTree de Python et d’ajouter, modifier et supprimer des parties du document.
Le document XML à traîter est bibliothèque.xml ci-dessous :
1 <?xml version=" 1 . 0 " e n c o d i n g="UTF−8" standalone="no" ?>
2 <b i b l i o t h e q u e>
3 < l i v r e>
4 < t i t r e l a n g u e=" f r " type=" i l l u s t r é " >Sous l a mer</ t i t r e>
5 <a u t e u r>
6 <nom>Pat</nom>
7 <prenom>Rick</prenom>
8 </ a u t e u r>
9 <p r i x d e v i s e=" dzd ">500</ p r i x>
10 </ l i v r e>
11 < l i v r e>
12 < t i t r e l a n g u e=" en " type=" t e x t e " >Above t h e sky</ t i t r e>
13 <a u t e u r>
14 <nom>Blue</nom>
15 <prenom>Paaz</prenom>
16 </ a u t e u r>
17 <p r i x d e v i s e=" dzd ">1000</ p r i x>
18 </ l i v r e>
19 <dvd l a n g u e=" en " type=" d o c u m e n t a i r e ">
20 < t i t r e>Earth , Wind and F i r e</ t i t r e>
21 </dvd>
22 </ b i b l i o t h e q u e>

Étapes à suivre
Dans un script python tp02.py :

1.) Importer le module xml.etree.ElementTree. Ensuite, créer un Element racine (ligne 2) nommé bibliotheque,
un ElementTree nommé doc (ligne 3) et écrire ce dernier dans un fichier XML (ligne 5 – faire attention au
chemin de sauvegarde).
1 import xml . e t r e e . ElementTree a s ET
2 r o o t = ET. Element ( ’ b i b l i o t h e q u e ’ )
3 doc = ET. ElementTree ( r o o t )
4 ...
5 doc . w r i t e ( " xml_docs / b i b l i o t h e q u e . xml " )

Attention. Toutes les modifications qui suivent devront être faites avant d’appeler la fonction
ElementTree.write pour pouvoir les faire apparaître dans le document XML en sortie.

2.) Pour créer des éléments imbriqués, il existe plusieurs manières de faire. Les éléments livre, titre, auteur et
prix, sont créés et ajoutés différemment dans la racine. Remarquez l’ordre d’ajout des éléments.
1 L = ET. Element ( " l i v r e " )
2 r o o t . append (L)
3

4 A = ET. SubElement (L , " a u t e u r " )


5 P = ET. SubElement (L , " p r i x " )
6

7 T = ET. Element ( " t i t r e " )


8 L . i n s e r t ( 0 ,T)

3.) À la création d’un élément, le dictionnaire des attributs Element.attrib est vide tandis que le texte T.text
est de type NoneType. La manipulation des attributs et du texte se fait comme tout dictionnaire et chaîne
de caractères dans Python. Dans ce qui suit, du texte et des attributs sont ajoutés et supprimés pour les
éléments titre, prix et auteur.
1 T . t e x t = " s o u s l a mer"
2 T . a t t r i b = {" l a n g u e " : " f r " ,
3 " type " : " i l l u s t r e "}
4

5 P . a t t r i b [ " d e v i s e " ] = " dzd "


6 P . t e x t = "500"
7

8 A. a t t r i b [ " i d " ] = "01"


9 A. t e x t = " Mozart "
10

11 d e l A. a t t r i b [ " i d " ]
12 A. t e x t = None

4.) Un élément peut être copié avec la fonction deepcopy() du package copy. Dans l’exemple ci-bas, l’élément
livre est copié et inséré 3 fois comme élément enfant de la racine.
1 import copy
2

3 f o r i in range ( 3 ) :
4 Lc = copy . deepcopy (L) #ou copy . copy (L)
5 Lc . f i n d ( " p r i x " ) . t e x t = s t r ( 1 0 0 ∗ i )
6 r o o t . append ( Lc )

5.) La suppression d’un Element peut se faire à l’aide de la fonction Element.remove(eltChild) appelée via
l’élément parent de l’élément à supprimer (eltChild ). Dans ce qui suit, tous les livres écrits en français et
dont le prix est supérieur à 200 sont supprimés :
1 f o r L in root . i t e r (" l i v r e " ) :
2

3 langue = L . f i n d (" t i t r e " ) . get (" langue ")


4 p r i x = f l o a t (L . f i n d ( " p r i x " ) . t e x t )
5

6 i f l a n g u e == " f r " and p r i x > 2 0 0 :


7 r o o t . remove (L)

Exercice
Compléter le programme Python précédent pour produire exactement le document XML donné au début de la
série.

Vous aimerez peut-être aussi