using html5lib with xml.etree.ElementTree
我需要一种使用html5lib解析器生成真正的xml.etree.ElementTree的方法。 (出于可移植性原因,不能选择lxml。)
1 | xml.etree.ElementTree.parse(source, parser=None) |
但目前尚不清楚这种解析器的外观。我可以在
内容:
我有一个格式错误的XHTML文件,无法使用
1 2 3 4 5 6 7 | <?xml version="1.0" ?> <!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> Title</head> <body>Note that this bris missing a closing slash</body> </html> |
所以我用
但是html5lib显然不会输出
-
html5lib的
find 不支持namespaces 参数,这使得XPath在没有笨拙的包装函数的情况下过于冗长。 - Eclipse调试器不支持html5lib etree的追溯。
因此,我不能单独使用ElementTree或html5lib。
给定
返回的不是
Eclipse无法通过树的事实归结为html5lib存在时默认为
1 2 3 4 5 6 | import xml.etree.ElementTree as etree import html5lib tb = html5lib.getTreeBuilder("etree", implementation=etree) p = html5lib.HTMLParser(tb) tree = p.parse("<html>") |
您必须将响应包装在
1 2 3 4 5 | >>> from xml.etree.ElementTree import ElementTree >>> from html5lib import parse >>> >>> ElementTree(parse("<html>")) <xml.etree.ElementTree.ElementTree at 0x...> |