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

时间:2011-05-22 14:51:03

标签: python html 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"> ...

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

如何在不使用html:命名空间信息的情况下将某些html保存到磁盘?

这是我用来写的代码:

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

谢谢!

2 个答案:

答案 0 :(得分:1)

我一直在使用此解决方法:

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

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

答案 1 :(得分:0)

嗯,我已经开始工作,但是采用了一种迂回的方法。

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