python xml.programme etree.ElementTree ajouter à la sous-élément
Je suis en train d'utiliser le format xml.programme etree.ElementTree pour parser un fichier xml, trouver une balise spécifique, ajouter un enfant de la balise, ajouter un autre enfant à la nouvelle balise et ajouter du texte pour le dernier enfant.
Mon XML:
<root>
<a>
<b>
<c>text1</c>
</b>
<b>
<c>text2</c>
</b>
</a>
</root>
XML souhaitée:
<root>
<a>
<b>
<c>text1</c>
</b>
<b>
<c>text2</c>
</b>
<b>
<c>text3</c>
</b>
</a>
</root>
Code actuel:
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
for x in root.iter():
if (x.tag == 'a'):
ET.SubElement(x, 'b')
ET.SubElement(x, 'c')
#add text
Cela semble fonctionner sauf le 'c' ajoute en tant qu'enfant de " un "au lieu de "b"
Comme suit:
<root>
<a>
<b>
<c>test1</c>
</b>
<b>
<c>test2</c>
</b>
<b /><c/></a>
</root>
Aussi, comment puis-je ajouter du texte à la fonction nouvellement créée de l'élément "c"? J'ai pu parcourir jusqu'à ce que je trouve le tag 'c' qui n'a pas de texte, mais il doit y avoir une meilleure façon.
OriginalL'auteur andrsnn | 2014-03-31
Vous devez vous connecter pour publier un commentaire.
Vous devez spécifier
b
comme un élément parent pourc
.Aussi, pour obtenir les
a
tag vous n'avez pas besoin d'une boucle il suffit de prendre la racine (a
).imprime:
nope, il suffit d'utiliser
root.find('a')
ensuite.J'aurais du être plus précis, " a " n'est pas la racine. Je vais modifier ma question.
J'ai mis à jour le code en tenant compte de vos dernières modifications apportées à la structure xml, lui donner un essai.
l'a obtenu. quand est-racine.iter() couramment utilisés? juste pour l'impression de tous les enfants de manière récursive?
OriginalL'auteur alecxe
Je préfère définir ma propre fonction d'ajout de texte:
Qui est alors très pratique à utiliser:
OriginalL'auteur Yonatan Simson