![](/img/trans.png)
[英]Writing with lxml emitting no whitespace even when pretty_print=True
[英]Pretty print in lxml is failing when I add tags to a parsed tree
我有一个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标签。 但我得到了相同的结果。
如果我不解析文件并只是一次创建所有标签,它将正确打印。 所以我认为它与解析文件有关。
如何让漂亮的印刷工作?
它与lxml
如何处理空格有关 - 有关详细信息,请参阅lxml常见问题解答 。
要解决此问题,请将文件的加载部分更改为以下内容:
parser = etree.XMLParser(remove_blank_text=True)
root = etree.parse('file.xml', parser).getroot()
我没有对它进行测试,但它应该通过此更改缩进您的文件。
我在写文件时遇到了同样的问题,其他人遇到此问题:
在运行main函数后,我创建了一个辅助函数pretty_prints。
from lxml import etree
def ppxml(xml):
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(xml, parser)
tree.write(xml, encoding='utf-8', pretty_print=True, xml_declaration=True)
在我的主程序文件中
if __name__ == '__main__':
main()
ppxml(xml)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.