You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 10:33:08