lxml:tostring中的pretty_print选项在换行符号后无法正常工作

时间:2016-03-29 12:04:58

标签: python lxml pretty-print

符号' \ n' pretty_print被忽略。 例如:

i

输出是:

import lxml.etree as etree

strs = ["<root>\n<e1/><e2/></root>",
  "<root><e1/><e2/></root>"]

for str in strs:
 xml = etree.fromstring(str)
 print etree.tostring(xml, pretty_print=True)

两个字符串都是有效的xml。 第一个字符串有符号&#39; \ n&#39;此符号后将忽略pretty_print。

它和lxml错误还是我需要特殊的操作来进行漂亮的格式化?

1 个答案:

答案 0 :(得分:1)

谢谢你,Corley

此处解释了此行为的原因: http://lxml.de/FAQ.html#why-doesn-t-the-pretty-print-option-reformat-my-xml-output

正确的代码是:

import lxml.etree as etree

strs = ["<root>\n<e1/><e2/></root>",
    "<root><e1/><e2/></root>"]

parser = etree.XMLParser(remove_blank_text=True)
for str in strs:
    xml = etree.fromstring(str, parser=parser)
    print etree.tostring(xml, pretty_print=True)