6

我的程序基本上读取一个输入文件,从该文件中创建一个 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、tidy、parser ...)

4

2 回答 2

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)
于 2014-08-18T00:48:20.210 回答
0

这很奇怪,因为这正是它应该工作的方式。你能试试这个:

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>

这应该会生成一个格式化的字符串,您可以自己处理。

于 2013-07-18T08:53:53.760 回答