1
我使用xml.etree.ElementTree解析XML文件,并认为一个孩子为一个元素添加脚本。我有两种方法,即在技术上的工作,但结果都在搞砸格式化/空格当我转储使用ET.dump(根)Python xml.etree格式化美化?
第一种方法将整个XML我使用fromstring
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))
这导致该组被添加作为一个孩子,但组ENDTAG后没有换行和第一标签只有1片,不管我有多少制表投入新闻组字符串。
<group>
<uuid>f60e6b30-eec9-11e6-a5d4-2c768aabceca</uuid>
<id>2</id>
<name>newgroup</name>
<desc>Testing groups</desc>
</group></access>
我不知道为什么它正确地采取空格的组的孩子的,但搅乱组标签本身的格式。
第二种方法建立组的etree与它的孩子
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)
但随后整个新闻组树出现在一行不换行和标签都:
<group><uuid>f60e6b30-eec9-11e6-a5d4-2c768aabceca</uuid><id>2</id><name>newgroup</name><desc>Testing groups</desc></group></access>
我我是python的新手,并不知道如何格式化字符串。那么,如何美化这个东西,以便让脚本中的格式化XML格式化好?
我用固定霍版本参数递归调用(不这样做,他们将无法正常工作,如果没有默认值)。另外,请和赞成一起投票答复(上边三角形)。谢谢。 –