【发布时间】:2011-10-26 14:02:22
【问题描述】:
我有一个 xml 文件,我正在使用 lxml 中的 etree 来处理它,但是当我向它添加标签时,漂亮的打印似乎不起作用。
>>> from lxml import etree
>>> root = etree.parse('file.xml').getroot()
>>> print etree.tostring(root, pretty_print = True)
<root>
<x>
<y>test1</y>
</x>
</root>
到目前为止一切顺利。但是现在
>>> x = root.find('x')
>>> z = etree.SubElement(x, 'z')
>>> etree.SubElement(z, 'z1').attrib['value'] = 'val1'
>>> print etree.tostring(root, pretty_print = True)
<root>
<x>
<y>test1</y>
<z><z1 value="val1"/></z></x>
</root>
它不再漂亮了。我还尝试在创建 z1 标签的位置“向后”执行此操作,然后创建 z 标签并将 z1 附加到它,然后将 z 标签附加到 x 标签。但我得到了相同的结果。
如果我不解析文件并一次性创建所有标签,它将正确打印。所以我认为这与解析文件有关。
我怎样才能让漂亮的打印工作?
【问题讨论】:
标签: python xml parsing lxml pretty-print