6

我正在尝试将 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)

谢谢!

4

2 回答 2

4

我一直在使用这种解决方法:

from xml.etree import ElementTree as ET
ET.register_namespace('', 'http://www.w3.org/1999/xhtml')

然后html:在输出时前缀将被替换为空格。

于 2019-12-04T20:16:46.023 回答
1

好吧,我已经让它工作了,但是使用了一种迂回的方法。

我正在获取树的字符串(带有etree.tostrng()),然后re.sub('html:', '', thetext)用于删除命名空间信息。然后,我只是将字符串正常写入磁盘。

于 2011-05-22T17:12:40.140 回答