Bonjour,
je dois modifier les valeurs de certaines balises XML afin d'anonymiser celle-ci.
Le XML a une structure sous cette forme :
J'ai essayé en utilisant xml.etree et en faisant une recherche via findall, mais je n'arrive pas à avoir le résultat souhaité.
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <Element item="zone1"> <Simple> <Cle>NomZone1</Cle> <Val>Toto</Val> </Simple>
Avec ce code, il modifie la valeur pour tous les VAL et pas uniquement pour celui testé dans le IF.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 tree = ET.parse(fic_xml) for e in tree.findall('.//Element[@item="zone1"]'): # On recherche tous les éléments <Simple> s = e.findall('Simple') # On boucle dessus pour récupérer les cles for cles in s: cle = cles.find('Cle') # le fils # On met les clés dans une liste. Utile pour récupérer des données par la suite. listCle.append(cle.text) # On boucle dessus pour récupérer les valeurs for vals in s: val = vals.find('Val') # On met les valeurs dans une liste. Utile pour récupérer des données par la suite. listVal.append(val.text) if cle.text == "NomZone1": print "otot" val.text = val.text[0:1] + genNombre12() + genNombre2() if cle.text == "NomZone2": #print listVal[i] val.text = genLettres(val.text)
Existe t'il un moyen de lire le XML et si je tombe sur une balise qui doit-être modifiée, alors j'exécute ma fonction d'anonymisation.
Merci pour vos retours / pistes.
Bonne journée.
Cdt,
Partager