gpt4 book ai didi

python - 如何使用 Python 的 cElementTree 创建 <!DOCTYPE>

转载 作者:太空狗 更新时间:2023-10-29 18:17:24 57 4
gpt4 key购买 nike

我曾尝试使用此问题的答案,但无法使其工作:How to create "virtual root" with Python's 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')

当我打开生成的“myfile.tmx”文件时,它包含以下内容:

<?xml version='1.0' encoding='UTF-8'?>
<tmx version="1.4a"><header adminlang="EN" /><body /></tmx>

我错过了什么?或者,是否有更好的工具?

最佳答案

你可以设置xml_declaration write 函数上的参数为 False,因此输出将没有带有编码的 xml 声明,然后只需手动附加您需要的 header 。实际上,如果您将编码设置为 'utf-8'(小写),也不会添加 xml 声明。

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')

结果文件(为便于阅读手动添加换行符):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE tmx SYSTEM "tmx14a.dtd">
<tmx version="1.4a">
<header adminlang="EN" />
<body />
</tmx>

关于python - 如何使用 Python 的 cElementTree 创建 &lt;!DOCTYPE>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8868248/

57 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com