1. ホーム
  2. python

[解決済み] xml.etree.ElementTreeを使ったXML宣言の書き方

2023-05-21 21:25:30

質問

PythonでXMLドキュメントを生成する際に ElementTree を使っていますが tostring 関数には XML 宣言 を含まないようにします。

from xml.etree.ElementTree import Element, tostring

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

以下のXML宣言を含む文字列が必要です。

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

しかし、これを行うための文書化された方法はないようです。

のXML宣言をレンダリングするための適切な方法はありますか? ElementTree ?

どのように解決するのですか?

を使った方法がないようなので、驚いています。 ElementTree.tostring() . しかし ElementTree.ElementTree.write() を使って、XMLドキュメントを偽のファイルに書き出すことができます。

from io import BytesIO
from xml.etree import ElementTree as ET

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

f = BytesIO()
et.write(f, encoding='utf-8', xml_declaration=True) 
print(f.getvalue())  # your XML file, encoded as UTF-8

参照 この質問 . それでも、自分でプリペイドを書かないと「スタンドアロン」属性は得られないと思います。