lxml,序列化时缺少doctype

2024-09-28 05:22:28 发布

您现在位置:Python中文网/ 问答频道 /正文

In [1]: from lxml import etree

我有一个HTML文档:

^{pr2}$

正确分析其doctype:

In [3]: root.getroottree().docinfo.doctype
Out[3]: u'<!DOCTYPE html PUBLIC "-//IETF//DTD HTML//EN">'

但当连载的时候,我就失去了它:

In [4]: etree.tostring(root.getroottree(), method='html')
Out[4]: '<html></html>'

如何使doctype序列化?在

Debian GNU/Linux,Sid。Python 2.6.6。lxml 2.2.8-2。在


Tags: infrom文档importhtmlrootoutlxml
2条回答

到目前为止,我能够让它正常工作的唯一方法是使用默认的XML解析器并向文档添加一个非空的系统URL:

>>> html = etree.parse(StringIO('''<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN" " ">\n<HTML></HTML>'''))
>>> etree.tostring(html, method="xml")
'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN" " ">\n<HTML/>'
>>> etree.tostring(html, method="html")
'<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN" " ">\n<HTML></HTML>'

使用HTMLParser的相同操作会产生相同的docinfo,但不会得到所需的输出:

^{pr2}$

Bug,如对另一个答案的注释所述:missing doctype when serialized。将于2015年2月在lxml的3.5版本中发布。在

相关问题 更多 >

    热门问题