我正在尝试使用 Python 2.7.6 中的 lxml 4.1.1 读取、修改和写入 XML 文件。
My code:
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
's tail
,但随后甚至压痕也被打破了。
Edit:我需要c
元素在开始和结束标记中保持分离:<c></c>
。这就是我使用的原因method='HTML'
在示例中。
写入时使用“xml”输出方法(这是默认值,因此不必显式给出)。
Set the text
的财产c
元素为空字符串,以确保元素被序列化为<c></c>
.
Code:
import lxml.etree as et
parser = et.XMLParser(remove_blank_text=True)
xml_doc = et.parse('in.xml', parser)
b = xml_doc.getroot().find('b')
c = et.Element('c')
c.text=''
b.append(c)
xml_doc.write('out.xml', pretty_print=True)
结果(out.xml):
<a>
<b>
<c></c>
</b>
</a>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)