【问题标题】:Specify newline character for cElementTree为 cElementTree 指定换行符
【发布时间】:2012-10-19 13:20:55
【问题描述】:

代码

我正在用 cElementTree 编写一个 xml 文件,如下所示:

cElementTree.ElementTree(xml_tree]).write(xmlPath, encoding="ISO-8859-1", xml_declaration=True)  

实际结果

这给出了以下文件(在 Windows 上):

<?xml version='1.0' encoding='iso-8859-1'?><tag1 = "1"></tag1>

因此缺少换行符。

我尝试添加适当的 windows 换行符 \r\n 'by hand',现在我明白了:

<?xml version='1.0' encoding='iso-8859-1'?><tag1 = "1">
</tag1>

想要的结果

但是,我希望在每一行之后都有正确的换行符,这样我的输出应该是这样的:

<?xml version='1.0' encoding='iso-8859-1'?>
<tag1 = "1">
</tag1>

我怎样才能做到这一点?

【问题讨论】:

  • 换行符没有意义。
  • 除了@Tichodroma 的答案中的链接,还有this one,它有更多(可能更好)的信息。
  • @Tichodroma:我知道这一点,尽管我有一个工具无法在没有换行符的情况下读取 xml 文件。而且我无法更改此工具:-(

标签: python xml newline celementtree


【解决方案1】:

lxml 支持漂亮打印,cElementTree 不支持。

from lxml import etree
xml_str = "<parent><child>text</child><child>other text</child></parent>"
root = etree.fromstring(xml_str)
print etree.tostring(root, pretty_print=True)

Python pretty XML printer for XML stringPretty printing XML in Python

【讨论】:

  • 感谢您的回答!但是 lxml 不包含在 python 的标准安装中。因为我想在多台计算机上使用它,所以很遗憾,这是“不行”。
猜你喜欢
  • 2016-10-13
  • 2017-06-13
  • 2012-10-03
  • 1970-01-01
  • 2015-06-26
  • 2012-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多