Python/ElementTree:写入没有命名空间的文件

Nat*_*han 5 html python xml namespaces 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"> ...
Run Code Online (Sandbox Code Playgroud)

由于它有html:命名空间信息,浏览器无法呈现它。

如何让 etree 在没有html:命名空间信息的情况下将一些 html 保存到磁盘?

这是我用来编写的代码:

with open('/path/to/file.html', mode='w', encoding='utf-8') as outfile:
mypage.write(outfile)
Run Code Online (Sandbox Code Playgroud)

谢谢!

nup*_*ick 9

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

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

那么html:输出时前缀会被替换为空格。


Nat*_*han 2

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

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