tah*_*oar 10 python xml elementtree
我试图在这个问题中使用答案,但无法使其工作:如何使用Python的ElementTree创建"虚拟根目录"?
这是我的代码:
import xml.etree.cElementTree as ElementTree
from StringIO import StringIO
s = '<?xml version=\"1.0\" encoding=\"UTF-8\" ?><!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-8')
Run Code Online (Sandbox Code Playgroud)
当我打开生成的'myfile.tmx'文件时,它包含以下内容:
<?xml version='1.0' encoding='UTF-8'?>
<tmx version="1.4a"><header adminlang="EN" /><body /></tmx>
Run Code Online (Sandbox Code Playgroud)
我错过了什么?或者,有更好的工具吗?
dem*_*exx 14
你可以在函数上设置xml_declaration参数,因此输出不会有带编码的xml声明,然后只需手动附加你需要的头.实际上,如果将编码设置为"utf-8"(小写),则不会添加xml声明.writeFalse
import xml.etree.cElementTree as ElementTree
tree = ElementTree.Element('tmx', {'version': '1.4a'})
ElementTree.SubElement(tree, 'header', {'adminlang': 'EN'})
ElementTree.SubElement(tree, 'body')
with open('myfile.tmx', 'wb') as f:
f.write('<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE tmx SYSTEM "tmx14a.dtd">'.encode('utf8'))
ElementTree.ElementTree(tree).write(f, 'utf-8')
Run Code Online (Sandbox Code Playgroud)
生成的文件(为了便于阅读,手动添加新行):
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tmx SYSTEM "tmx14a.dtd">
<tmx version="1.4a">
<header adminlang="EN" />
<body />
</tmx>
Run Code Online (Sandbox Code Playgroud)
你可以使用lxml及其tostring功能:
from lxml import etree
s = """<?xml version="1.0" encoding="UTF-8"?>
<tmx version="1.4a"/>"""
tree = etree.fromstring(s)
header = etree.SubElement(tree,'header',{'adminlang': 'EN'})
body = etree.SubElement(tree,'body')
print etree.tostring(tree, encoding="UTF-8",
xml_declaration=True,
pretty_print=True,
doctype='<!DOCTYPE tmx SYSTEM "tmx14a.dtd">')
Run Code Online (Sandbox Code Playgroud)
=>
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE tmx SYSTEM "tmx14a.dtd">
<tmx version="1.4a">
<header adminlang="EN"/>
<body/>
</tmx>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12356 次 |
| 最近记录: |