Python 为什么LXML写入在打印到新文件时不是很好?

Python 为什么LXML写入在打印到新文件时不是很好?,python,xml,lxml,python-3.7,Python,Xml,Lxml,Python 3.7,我想从一个文件中加载一个XML模板,修改它,并将结果保存到一个带有格式的新文件中。但是,“漂亮打印”并没有添加所需的格式。堆栈上的其他解决方案适用于将树写回同一个文件而不是新文件的情况。例如: from lxml import etree as ET parser = ET.XMLParser(remove_blank_text=True) tree = ET.parse("template.xml", parser) root = tree.getroot() A = ET.SubE

我想从一个文件中加载一个XML模板,修改它,并将结果保存到一个带有格式的新文件中。但是,“漂亮打印”并没有添加所需的格式。堆栈上的其他解决方案适用于将树写回同一个文件而不是新文件的情况。例如:

from lxml import etree as ET 

parser = ET.XMLParser(remove_blank_text=True) 
tree = ET.parse("template.xml", parser) 
root = tree.getroot() 
A = ET.SubElement(root, "A") 
ET.SubElement(A, "a") 
B = ET.SubElement(root, "B") 
ET.SubElement(B, "b") 
tree.write("output.xml", pretty_print=True)
template.xml

<document>
</document>

写入output.xml时没有格式化

<document>
<A><a/></A><B><b/></B></document>

编辑
template.xml中的文本,如下所示:

<document></document>

然后再次运行代码,您将得到以下结果:

<document>
  <A>
    <a/>
  </A>
  <B>
    <b/>
  </B>
</document>

其中指出:

漂亮地打印(或格式化)XML文档意味着添加白色 空间到内容。这些修改是无害的,如果它们只是 文档中不包含(文本)数据的影响元素。他们 如果数据影响包含数据的元素,则会损坏数据如果lxml 无法区分空白和数据,它不会改变您的 数据。因此,仅在不包含空格的节点之间添加空格 包含数据。对于构建的树,情况总是如此 一个元素接一个元素


你看过这里的线了吗: