【发布时间】:2018-05-27 05:50:52
【问题描述】:
我正在尝试在 Python 2.7.6 中使用 lxml 4.1.1 读取、修改和写入 XML 文件。
我的代码:
import lxml.etree as et
fn_xml_in = 'in.xml'
parser = et.XMLParser(remove_blank_text=True)
xml_doc = et.parse(fn_xml_in, parser)
xml_doc.getroot().find('b').append(et.Element('c'))
xml_doc.write('out.xml', method='html', pretty_print=True)
输入文件in.xml 如下所示:
<a>
<b/>
</a>
以及生成的输出文件out.xml:
<a>
<b><c></c></b>
</a>
或者当我设置remove_blank_text=True:
<a><b><c></c></b></a>
我希望 lxml 在 b 元素中插入换行符和缩进:
<a>
<b>
<c></c>
</b>
</a>
我怎样才能做到这一点?
我尝试了一些 tidy lib 包装器,但它们似乎专注于 HTML 而不是 XML。
我也尝试将换行符添加为b 的tail,但随后连缩进都被破坏了。
编辑:我需要 c 元素在开始和结束标记中保持分隔:<c></c>。这就是我在示例中使用method='HTML' 的原因。
【问题讨论】:
-
删除
method='html'或使用method='xml'。 -
谢谢,这为我指明了正确的解决方案!
标签: xml python-2.7 lxml pretty-print