我的程序基本上读取了一个输入文件,从该文件生成一个lxml.etree,而不是例如我向etree添加一个节点,然后我想将它打印回一个文件。 所以要把它写回我使用的文件:
et.write('Documents\Write.xml', pretty_print=True)
我的输出是:
<Variable Name="one" RefID="two"><Component Type="three"><Value>four</Value></Component></Variable>
虽然我喜欢这样的东西:
<Variable Name="one" RefID="two">
<Component Type="three">
<Value>four</Value>
</Component>
</Variable>
我错在哪里?我尝试了很多解决方案,但似乎没有解决方案(beautifulsoup,整洁,解析器...)
答案 0 :(得分:1)
这很奇怪,因为它应该是它的工作方式。 你能试试这个:
root = etree.XML( YOUR XML STRING )
print etree.tostring(root, pretty_print=True)
<Variable Name="one" RefID="two">
<Component Type="three">
<Value>four</Value>
</Component>
</Variable>
这应该生成一个格式化的字符串,您可以自己处理。
答案 1 :(得分:1)
不要使用标准解析器。 使用remove_blank_text = True的自定义解析器。
parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse(self.output_file, parser=parser)
// Do stuff with the tree here
tree.write(your_output_file, pretty_print=True)