99 votes

Comment écrire une déclaration XML en utilisant xml.etree.ElementTree

Je suis en train de générer un document XML en Python à l'aide d'un fichier ElementTree mais le tostring n'inclut pas une fonction Déclaration XML lors de la conversion en texte clair.

from xml.etree.ElementTree import Element, tostring

document = Element('outer')
node = SubElement(document, 'inner')
node.NewValue = 1
print tostring(document)  # Outputs "<outer><inner /></outer>"

J'ai besoin que ma chaîne inclue la déclaration XML suivante :

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

Cependant, il ne semble pas y avoir de moyen documenté de le faire.

Existe-t-il une méthode appropriée pour rendre la déclaration XML dans un fichier de type ElementTree ?

0voto

G M Points 508

Inclure "autonome" dans la déclaration

Je n'ai pas trouvé d'alternative pour ajouter l'option standalone dans la documentation, j'ai donc adapté l'argument ET.tosting pour le prendre comme argument.

from xml.etree import ElementTree as ET

# Sample
document = ET.Element('outer')
node = ET.SubElement(document, 'inner')
et = ET.ElementTree(document)

 # Function that you need   
 def tostring(element, declaration, encoding=None, method=None,):
     class dummy:
         pass
     data = []
     data.append(declaration+"\n")
     file = dummy()
     file.write = data.append
     ET.ElementTree(element).write(file, encoding, method=method)
     return "".join(data)
# Working example
xdec = """<?xml version="1.0" encoding="UTF-8" standalone="no" ?>"""    
xml = tostring(document, encoding='utf-8', declaration=xdec)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X