如何创建;“虚拟根”;使用Python';什么是元素树?

如何创建;“虚拟根”;使用Python';什么是元素树?,python,elementtree,Python,Elementtree,我试图使用Python的ElementTree生成一个XHTML文件 但是,ElementTree.Element()只允许我创建一个标记(例如HTML)。 我需要创建某种类型的虚拟根或任何它被称为的东西,以便我可以放置各种类型的文档、doctype等 我该怎么做? 谢谢我不知道是否有更好的方法,但我已经看到了这一点: 将基础文档创建为字符串: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww

我试图使用Python的ElementTree生成一个XHTML文件

但是,ElementTree.Element()只允许我创建一个标记(例如HTML)。 我需要创建某种类型的虚拟根或任何它被称为的东西,以便我可以放置各种类型的文档、doctype等

我该怎么做?
谢谢

我不知道是否有更好的方法,但我已经看到了这一点:

将基础文档创建为字符串:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html></html>


然后解析该字符串以开始新文档。

我也遇到了同样的问题。解析文档并再次写回文档时,文档类型定义不再存在。我在浏览文档时发现了一个解决方案:

保存HTML文件#

要保存普通HTML文件,只需写出树

tree.write("outfile.htm")
只要文件不包含任何嵌入的脚本或样式标记,这就可以正常工作

如果需要,可以在文件开头添加DTD引用:

file = open("outfile.htm", "wb")
file.write(DTD + "\n")
tree.write(file)
file.close()

+1,已确认,elementtree无法添加/创建doctype(但可以解析它!),因此此解决方案非常干净。这似乎不再有效:
import xml.etree.elementtree as ET;字符串='''\n'';print(ET.tostring(ET.fromstring(string),encoding='unicode'))
仅使用Python 3.6发出
,这不是现成的,但可以很容易地解决。必须使用
“wb”
而不是
“w”
打开文件,并在前缀字符串上使用
.encode()
作为
文件。write
需要一个带有
“wb”
的二进制参数。