忽略 xml.etree.ElementTree.XMLParser Python 中不匹配的标签
Posted
技术标签:
【中文标题】忽略 xml.etree.ElementTree.XMLParser Python 中不匹配的标签【英文标题】:Ignore mismatched tag in xml.etree.ElementTree.XMLParser Python 【发布时间】:2017-03-11 21:43:33 【问题描述】:有什么方法可以忽略 Python xml.etree.ElementTree.XMLParser 中不匹配的标签?
【问题讨论】:
不,没有。如果标签不匹配,那么您所拥有的标签格式不正确。这意味着它不是 XML。 lxml 中的XMLParser
类有一个recover
参数(lxml.de/api/lxml.etree.XMLParser-class.html),但在 ElementTree 中没有类似的东西。
【参考方案1】:
如果存在不匹配的标签,那么您正在处理的输入根据定义不是 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>
【讨论】:
以上是关于忽略 xml.etree.ElementTree.XMLParser Python 中不匹配的标签的主要内容,如果未能解决你的问题,请参考以下文章
python解析xml文件之xml.etree.cElementTree和xml.etree.ElementTree区别
使用 xml.etree.ElementTree 在 python 中解析 XML