Bonjour, je viens de commencer à développer en Python et je ne suis pas une experte non plus en xml.
J’ai des problèmes avec l’utilisation de la librairie lxml et la gestion des namespaces.
Je cherche à modifier le fichier xml suivant:
Je souhaite obtenir le xml ci-dessous
Pour cela j’utilise le code suivant:
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 from lxml import etree as ET parser = ET.XMLParser(remove_blank_text=True) tree = ET.parse('namespace.xml',parser) root = tree.getroot() child1 = root.find('.//{http://www.isotc211.org/2005/gmd}child1') parent = child1.getparent() id = root.index(child1) child2 = ET.Element('{http://www.isotc211.org/2005/gmd}child2', nsmap = {'srv':'http://www.isotc211.org/2005/srv'}) child_child2 = ET.SubElement(child2,'{http://www.isotc211.org/2005/gco}CharacterString') child_child2.text = 'text' parent.insert(id+1,child2) ET.ElementTree(root).write('namespace2.xml', pretty_print = True)
Le problème est que je n’arrive pas à faire afficher le namespace spécifié dans le code dans le fichier xml de sortie. J’obtiens le résultat suivant :
Je ne sais pas si c’est pertinent, dans le code, de définir un namespace à « child2 » sachant qu’il l’a déjà hérité de « parent ».
Mais comment faire afficher le namespace voulu dans la balise « child2 » ?
Avez-vous des idées ?
Merci beaucoup de votre aide
Partager