有没有办法在Python xml.etree.ElementTree.XMLParser中忽略不匹配的标签?
答案 0 :(得分:3)
如果标记不匹配,那么您正在处理的输入不是XML(因为它的格式不正确)。没有办法用ElementTree“忽略”不匹配的标签。
lxml库中的XMLParser
类具有recover
构造函数参数(请参阅http://lxml.de/api/lxml.etree.XMLParser-class.html)。当recover=True
时,lxml将尝试修复格式错误的输入。例如:
from lxml import etree
BADINPUT = """
<root>
<foo>ABC</bar>
<baz>DEF</baz>
</root>"""
parser = etree.XMLParser(recover=True)
root = etree.fromstring(BADINPUT, parser)
print etree.tostring(root)
输出(错误</bar>
结束标记已更改为</foo>
):
<root>
<foo>ABC</foo>
<baz>DEF</baz>
</root>