使用lxml将输出格式化为XML

时间:2013-07-18 07:52:53

标签: python xml python-3.x lxml pretty-print

我的程序基本上读取了一个输入文件,从该文件生成一个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,整洁,解析器...)

2 个答案:

答案 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)