xml.etree.elementtree.Elementを使用してXMLドキュメントを作成し、ElementTree.write()関数を使用してそれを印刷したかったのですが、出力される宣言タグは
<?xml version='1.0' encoding='UTF-8'?>
二重引用符で囲む必要がありますが。それを変える方法はありますか?
最終的に、tostring 関数を使用して XML を正しいタグに追加し、次に python file.write 関数を追加しました。それは醜いです(そして、ファイルの実際のエンコーディングについて嘘をついています)が、動作します。
私はbg1987と同じことをしました。これは、誰かに役立つ場合に備えて私が書いた関数です
def wrTmp(treeObject, filepath):
xml_str = ('<?xml version="1.0" encoding="UTF-8"?>' + '\n' + xml.etree.ElementTree.tostring(treeObject.getroot(), method='xml'))
with open(filepath, 'wb') as xml_file:
xml_file.write(xml_str)
ElementTree.write
Pythonが二重引用符で囲むところに単一引用符を要求するさまざまな $workplace ツールのハックのため、逆を除いてほとんど同じことをしなければなりませんでした。(コードの一部はリテラル文字列status='ok'
を探しますが、 を認識しませんstatus="ok"
。はい、そのコードは実際にはいくつかの点で壊れていますが、回避する必要があります。)
幸いなことに、「ユーザー データ」の一重引用符または二重引用符は、 (それぞれ)'
およびとしてエンコードされます。"
私の場合、 (他の理由で)tostring
ではなくすでに使用していたので、次のようにしました:write
import xml.etree.ElementTree as ET
# [... mass snippage]
text = ET.tostring(reply).replace('"', "'")
# [... snippaage]
self.wfile.write(text)
(明らかに、replace("'", '"')
代わりに必要になります。)