Python 2.7 et minidom: Impossible de suprimer un Node d'un XML
Bonjour,
Je travail sur Python 2.7 et je cherche à supprimer un Node d'un XML. J'utilise la libraire Minidom.
Mon premier objectif etait de supprimer tous les Node de mon DOM au dur et à mesure via la fontion: previousSibling. Mais le Node n’était jamais supprimé (malgrés aucun message d'erreur).
J'ai donc essayer de ne supprimer juste le premier Node de mon XML et de suivre un tutohttp://www.bitpapers.com/2012/04/pyt...-dom-tree.html
Mais mon Node n'est également jamais supprimer du XML et je ne comprend pas porquoi.
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| from xml.dom import minidom
def patchXML (Tree):
if Tree is not None:
tree = minidom.parse(Tree)
else :
xmldoc= minidom.parse(r"C:\Users\HAZANM\Documents\Aptana Studio 3 Workspace\test\test.xml")
#Parse XML file to DOM tree
doc_root = xmldoc.documentElement
print "\nNodes\n==================="
nodeList = xmldoc.childNodes
for node in nodeList:
print node.toprettyxml()
#Delete first node
doc_root.removeChild(doc_root.childNodes[0])
print "\nNodes\n==================="
nodeList = xmldoc.childNodes
for node in nodeList:
print node.toprettyxml()
patchXML(None); |
et voici les résultats du print:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| Nodes
===================
<Workstations>
<Computer>
<Processor>
Pentium M
</Processor>
<Memory>
512MB
</Memory>
</Computer>
<Computer>
<Processor>
Pentium Core 2
</Processor>
<Memory>
1024MB
</Memory>
</Computer>
<Computer>
<Processor>
Pentium Core Duo
</Processor>
<Memory>
1024MB
</Memory>
</Computer>
</Workstations>
Nodes
===================
<Workstations>
<Computer>
<Processor>
Pentium M
</Processor>
<Memory>
512MB
</Memory>
</Computer>
<Computer>
<Processor>
Pentium Core 2
</Processor>
<Memory>
1024MB
</Memory>
</Computer>
<Computer>
<Processor>
Pentium Core Duo
</Processor>
<Memory>
1024MB
</Memory>
</Computer>
</Workstations> |
Auriez vous des idées sur ce problème?
Merci d'avance de toute votre aide,
Python 2.7 et minidom: Impossible de suprimer un Node d'un XML
Merci pour votre réponse,
Alors j'ai regardé un peu plus prés.
L'exemple ne marche pas. Par contre si je fais
Code:
doc_root.removeChild(doc_root.childNodes[1])
, j'arrive a supprimer ma balise.
Mais je n'arrive pas pas supprimé la seconde ou dernière.
Ce qui est bizare, c'est que le XML en sortie est pleins d'espace et de retour à la ligne qu'i n'existait pas dans celui d'origine.
Je fais fait un print sur la première balise XML, j'ai un résultat un peu bizarre:
Code:
1 2
|
print doc_root.childNodes[0] |
le résultat est:
Code:
<DOM Text node "u'\n\t'">
J'ai commencer à utiliser comme librairie ElementTree , mais mon Algo étant un peu complexe, utiliser Minidom me paraissait plus pratique, ayant besoin par la suite d'utiliser previousSiblin