Python 如何将ElementTree保存为UTF-16

Python 如何将ElementTree保存为UTF-16,python,xml,elementtree,Python,Xml,Elementtree,我试图用cElementTree保存一个编码为UTF-16的XML文件。这是相同的项目,但不同于中的DOCTYPE问题: 我了解到,如果我不在字符串中声明编码,cElementTree将添加它。因此,代码如下所示: import xml.etree.cElementTree as ElementTree from StringIO import StringIO s = '<?xml version=\"1.0\" ?><!DOCTYPE tmx SYSTEM \"tmx14a

我试图用cElementTree保存一个编码为UTF-16的XML文件。这是相同的项目,但不同于中的DOCTYPE问题:

我了解到,如果我不在字符串中声明编码,cElementTree将添加它。因此,代码如下所示:

import xml.etree.cElementTree as ElementTree
from StringIO import StringIO
s = '<?xml version=\"1.0\" ?><!DOCTYPE tmx SYSTEM \"tmx14a.dtd\" ><tmx version=\"1.4a\" />'
tree = ElementTree.parse(StringIO(s)).getroot()
header = ElementTree.SubElement(tree,'header',{'adminlang': 'EN',})
body = ElementTree.SubElement(tree,'body')
ElementTree.ElementTree(tree).write('myfile.tmx','UTF-16')
将xml.etree.cElementTree导入为ElementTree
从StringIO导入StringIO
s=“”
tree=ElementTree.parse(StringIO(s)).getroot()
header=ElementTree.SubElement(树,'header',{'adminlang':'EN',})
body=ElementTree.SubElement(树,'body')
ElementTree.ElementTree(tree.write('myfile.tmx','UTF-16'))
当我用UTF-8编写文件时,一切都很好。但是,当我更改为UTF-16时,文本编码已损坏。它还缺少所需的字节顺序标记。当我尝试将BOM表添加到字符串的开头时

s = '\xFF\xFE<?xml version=\"1.0\"......
s='\xFF\xFE
另外,由于ElementTree模块的接口由lxml库复制,因此最好将
ElementTree
导入为
etree
。这将允许在您需要更强大的
lxml
功能时减少更改

另外,由于ElementTree模块的接口由lxml库复制,因此最好将
ElementTree
导入为
etree
。这将允许在您需要更强大的
lxml
功能时减少更改

resultstring = ElementTree.tostring(tree, encoding='utf-16')