首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用lxml的Python pretty XML打印机

使用lxml的Python pretty XML打印机
EN

Stack Overflow用户
提问于 2011-02-23 12:14:18
回答 5查看 43.8K关注 0票数 28

在使用“丑陋的”XML读取现有文件并做了一些修改后,漂亮的打印不起作用。我试过etree.write(FILE_NAME, pretty_print=True)

我有以下XML:

代码语言:javascript
复制
<testsuites tests="14" failures="0" disabled="0" errors="0" time="0.306" name="AllTests">
    <testsuite name="AIR" tests="14" failures="0" disabled="0" errors="0" time="0.306">
....

我这样使用它:

代码语言:javascript
复制
tree = etree.parse('original.xml')
root = tree.getroot()

...    
# modifications
...

with open(FILE_NAME, "w") as f:
    tree.write(f, pretty_print=True)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-03-08 11:24:02

对我来说,这个问题直到我注意到这里的小花边新闻时才得到解决:

http://lxml.de/FAQ.html#why-doesn-t-the-pretty-print-option-reformat-my-xml-output

简短版本:

使用以下命令读入文件:

代码语言:javascript
复制
>>> parser = etree.XMLParser(remove_blank_text=True)
>>> tree = etree.parse(filename, parser)

这将“重置”已经存在的缩进,允许输出正确地生成自己的缩进。然后像往常一样使用pretty_print:

代码语言:javascript
复制
>>> tree.write(<output_file_name>, pretty_print=True)
票数 69
EN

Stack Overflow用户

发布于 2011-02-23 13:54:42

根据API docs的说法,lxml etree模块中没有"write“方法。对于将打印得很好的xml字符串放到文件中,您有几个选择。您可以像这样使用tostring方法:

代码语言:javascript
复制
f = open('doc.xml', 'w')
f.write(etree.tostring(root, pretty_print=True))
f.close()

或者,如果您的输入源不够完美,并且/或者您想要更多的旋钮和按钮来配置您的输出,您可以使用python包装器来创建整洁的库。

http://utidylib.berlios.de/

代码语言:javascript
复制
import tidy
f.write(tidy.parseString(your_xml_str, **{'output_xml':1, 'indent':1, 'input_xml':1}))

http://countergram.com/open-source/pytidylib

代码语言:javascript
复制
from tidylib import tidy_document
document, errors = tidy_document(your_xml_str, options={'output_xml':1, 'indent':1, 'input_xml':1})
f.write(document)
票数 12
EN

Stack Overflow用户

发布于 2011-02-23 12:19:54

代码语言:javascript
复制
fp = file('out.txt', 'w')
print(e.tree.tostring(...), file=fp)
fp.close()
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5086922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档