如何使用Python的cElementTree创建

发布于 2021-01-29 19:06:24

我试图在这个问题中使用答案,但不能使其起作用:如何使用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')

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

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

我想念什么?还是有更好的工具?

关注者
0
被浏览
42
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用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">')
    

    =>

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


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看