Python/ElementTree: 不带命名空间将内容写入文件

8

我正在尝试将一个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:命名空间信息呢?

这是我用来写入的代码:

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)来删除命名空间信息。然后,我只需正常地将字符串写入磁盘即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接