【问题标题】:Ignore mismatched tag in xml.etree.ElementTree.XMLParser Python忽略 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 中没有类似的东西。

标签: python python-2.7 python-3.x xml-parsing 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)

输出(错误的&lt;/bar&gt;结束标记已更改为&lt;/foo&gt;):

<root> 
  <foo>ABC</foo>
  <baz>DEF</baz> 
</root>

【讨论】:

    猜你喜欢
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多