lxml向空XML元素添加子元素后自动格式化(pretty printing)失效问题求助
lxml向空XML元素添加子元素后自动格式化(pretty printing)失效问题求助
大家好,我遇到了一个lxml模块的棘手问题:当我向一个空的XML元素中添加子元素后,自动格式化(pretty printing)功能就失效了,输出的XML格式乱糟糟的,折腾半天没找到思路,想请教下各位大佬有没有解决办法!
我的Python代码如下:
import lxml.etree xml_parser = lxml.etree.XMLParser(remove_blank_text=True) xml_tree = lxml.etree.parse("myFile.xml", xml_parser) root = xml_tree.getroot() for elem in root: if elem.tag == "apple": lxml.etree.SubElement(elem, "McIntosh") tree = lxml.etree.ElementTree(root) tree.write("output.xml", pretty_print=True, xml_declaration=True, encoding="utf-8")
输入的XML文件(myFile.xml)内容:
<fruits> <apple> </apple> </fruits>
得到的输出XML文件(output.xml)内容:
<?xml version='1.0' encoding='UTF-8'?> <fruits> <apple> <McIntosh/></apple> </fruits>
可以看到,新添加的<McIntosh/>标签没有正确换行缩进,直接挤在</apple>前面了。但如果原XML元素不是空的,我的代码就能正常工作:
原元素非空时的正常输出示例:
<?xml version='1.0' encoding='UTF-8'?> <fruits> <apple> <golden/> <McIntosh/> </apple> </fruits>
现在我有点头疼,如果找不到现成的解决办法,可能就得自己实现一个自定义XML格式化工具了。有没有大佬知道怎么修复这个问题呀?
备注:内容来源于stack exchange,提问作者Autechre
相关产品推荐
相关产品推荐

