Bonjour à tous,
Je souhaite ajouter automatiquement des nœuds dans un fichier xml et jusque là ça fonctionne:
Dans ce code je parcours mon fichier xml et ma variable: si la valeur new_nodes[0] est présente dans mon fichier xml, je crée après ce dernier un nouveau nœud avec les infos correspondantes aux positions 1 et 2 de ma liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 from lxml import etree as ET new_nodes=[["A",A1,"T17C"],["A1","A2", "C18T"],["A","A3","C745T"], ["A","A4", "C2215T"]] tree=ET.parse("file.xml") root=tree.getroot() for i in tree.xpath("//Node"): for j in new_nodes: if j[0] == i.get("Id"): i = etree.SubElement(hg, "Node") i.set("Id", hg2[1]) i.set("HG", hg2[2]) tree.write("file.xml")
Le problème est quand la valeur de la position new_nodes[0] apparait 3 fois (ici "A"): le nouveau nœud va être crée la première fois que la valeur A est trouvée dans le fichier xml mais pas les suivantes.
Je pense que cela vient du fait qu'une fois la valeur A est trouvée le premier nœud est crée et comme cette valeur apparaît qu'une fois dans le fichier XML, une fois que la boucle l'a passé elle ne revient pas en arrière pour créer les nouveaux nœuds qui contiennent cette même valeur.
Si quelqu'un aurait une idée pour créer tous les noeuds dont la valeur "A" est trouvée dans fichier xml ça serait top.
Merci par avance pour votre aide.
Piotre
Partager