我试图解析一些HTML作为例子
<solids>
&sub2;
</solids>
html文件作为字符串读入。我需要将sub2定义的文件中的HTML插入字符串的相应部分,然后将整个字符串作为XML处理。
我已经尝试过HTMLParser并使用它的处理程序
class MyHTMLParser(HTMLParser):
def handle_entityref(self, name):
# This gets called when the entity is referenced
print "Entity reference : "+ name
print "Current Section : "+ self.get_starttag_text()
print self.getpos()
但getpos返回行号和偏移量而不是字符串中的位置。 (插入可以在文件中的任何位置)
我找到了this link,这建议使用lxml。我看过lxml但看不出它会如何解决这个问题。它的扫描仪似乎没有实体处理程序,似乎是xml而不是html
好的,发现lxml会为我处理ENTITY引用。
只需使用选项resolve_entities = True设置解析器
parser = etree.XMLParser(resolve_entities=True)
root = etree.parse(filename, parser=parser)