Facile
Exemple pour Python 2 et 3 ( codage doit être utf8 ) :
import xml.etree.ElementTree as ElementTree
tree = ElementTree.ElementTree(ElementTree.fromstring('<xml><test>123</test></xml>'))
root = tree.getroot()
print(ElementTree.tostring(root, encoding='utf8', method='xml'))
Dans Python 3.8, il y a xml_déclaration pour ce genre de choses :
Nouveau dans la version 3.8 : Les fonctions xml_declaration et default_namespace par défaut.
xml.etree.ElementTree.tostring(élément, encodage="us-ascii", method="xml", *, xml_declaration=None, default_namespace=None, short_empty_elements=True) Génère une représentation sous forme de chaîne d'un élément XML y compris tous les sous-éléments. element est une instance d'élément. encoding 1 est l'encodage de sortie (par défaut, US-ASCII). Utilisez encoding="unicode" pour générer une chaîne Unicode (sinon, un bytestring est générée). method est soit "xml", "html" ou "text" (par défaut "xml"). (la valeur par défaut est "xml"). xml_declaration, default_namespace et short_empty_elements a la même signification que dans ElementTree.write(). Renvoie une chaîne de caractères (facultativement) codée contenant les données XML.
Exemple pour Python 3.8 et plus :
import xml.etree.ElementTree as ElementTree
tree = ElementTree.ElementTree(ElementTree.fromstring('<xml><test>123</test></xml>'))
root = tree.getroot()
print(ElementTree.tostring(root, encoding='unicode', method='xml', xml_declaration=True))