LXML杀死我的CDATA部分
问题描述:
我批量转换大量的XML文件,改变他们的字符编码成UTF-8:LXML杀死我的CDATA部分
with open(source_filename, "rb") as source:
tree = etree.parse(source)
with open(destination_filename, "wb") as destination:
tree.write(destination, encoding="UTF-8", xml_declaration=True)
不幸的是,它毁了我CDATA
部分,只是逃避他们,而不是。
来源:
<d><![CDATA[áÌÀøÅàùÑÄéú ëÌÄé áÈàÅùÑ éäå''ä ðÄùÑÀôÌÈè <small><small>(ùí ëå èæ)</small></small>
目的地:
<d>בְּרֵאשִׁית כִּי בָאֵשׁ יהו''ה נִשְׁפָּט <small><small>(שם כו טז)</small></small>
有哪些我可以设置它会告诉它不要动我的CDATA节的设置?我主要使用LXML来更改字符编码并正确编写XML头。
答
import lxml.etree as etree
parser = etree.XMLParser(strip_cdata=False)
with open(source_filename, "rb") as source:
tree = etree.parse(source, parser=parser)
相关文档:http://lxml.de/api.html#cdata – 2014-09-12 17:42:21