xml.etree.ElementTreeを使ってXMLファイルを解析するスクリプトがあり、要素に子を追加することになっています。私は、両方のは技術的に動作しますが、私が使用して、私はET.dumpを使用して、全体のXML(ルート)をダンプする際の書式/空白めちゃめちゃPython xml.etreeのフォーマットは美しいですか?
第一の方法では、両方の結果は、これがその結果
import xml.etree.ElementTree as ET
tree = ET.parse('test.xml')
root = tree.getroot()
#snip
newgroup='''
<group>
<uuid>%s</uuid>
<id>%s</id>
<name>%s</name>
<desc>%s</desc>
</group>
''' % (g_uuid, g_id, g_name, g_desc)
access = root.find('access')
access.append(ET.fromstring(newgroup))
をfromstringという、二つの方法がありますこのグループは子として追加されますが、グループの終了タグの後に改行がなく、最初のタグには1つのタブしかありません。
<group>
<uuid>f60e6b30-eec9-11e6-a5d4-2c768aabceca</uuid>
<id>2</id>
<name>newgroup</name>
<desc>Testing groups</desc>
</group></access>
それはグループのチャイルズ正しく空白を取りますが、グループタグ自体の書式設定を台無しに私はなぜだろうか。
<group><uuid>f60e6b30-eec9-11e6-a5d4-2c768aabceca</uuid><id>2</id><name>newgroup</name><desc>Testing groups</desc></group></access>
I:それは子供
newgroup = ET.Element('group')
ET.SubElement(newgroup, 'uuid').text = '%s' % g_uuid
ET.SubElement(newgroup, 'id').text = '%s' % g_id
ET.SubElement(newgroup, 'name').text = '%s' % g_name
ET.SubElement(newgroup, 'desc').text = '%s' % g_desc
access = root.find('access')
access.append(newgroup)
しかし、その後、全体newgroupツリーがすべてで改行やタブずに1行に表示されていて
第二の方法は、グループのetreeを構築しました。 Pythonの初心者です。実際には文字列の書式を設定する方法はわかりません。だから私はこの事を美しくして、書式の整ったXMLをスクリプトから取り出すことができますか?
horとverの引数を持つ再帰呼び出しを固定しました(これがなければ、デフォルトでないと正しく動作しません)。また、承認と一緒に回答(上三角)を投票してください。ありがとうございました。 –