Python/ElementTree: 不使用命名空间写入文件
我正在尝试将一个ElementTree对象保存到磁盘上。其他一切都正常,但输出的文件看起来是这样的:
<html:html lang="en-US" xml:lang="en-US" xmlns:html="http://www.w3.org/1999/xhtml">
<html:head>
<html:title>vocab</html:title>
<html:style type="text/css"> ...
由于它包含了html:
命名空间的信息,浏览器无法正确显示它。
我该如何让etree保存一些html到磁盘上,而不带html:
命名空间的信息呢?
这是我用来写入的代码:
with open('/path/to/file.html', mode='w', encoding='utf-8') as outfile:
mypage.write(outfile)
谢谢!
2 个回答
9
我一直在使用这个变通的方法:
from xml.etree import ElementTree as ET
ET.register_namespace('', 'http://www.w3.org/1999/xhtml')
这样在输出的时候,html:
前缀就会被空格替换掉。
2
好吧,我已经让它工作了,不过是用了一种比较绕的方法。
我先用 etree.tostrng()
得到一个树的字符串,然后用 re.sub('html:', '', thetext)
来去掉一些命名空间的信息。最后,我就像平常一样把这个字符串写入磁盘。