如何在解析Python中的xml时忽略不匹配的标签

问题描述:

我想用Python解析XML文件。我不需要分层标签结构 - 我只需要一个简单的SAX或基于Expat的分析器。但是,当XML文件格式不正确时,它们都会因mismatched tag相关的错误消息而失败。如何在解析Python中的xml时忽略不匹配的标签

有没有办法告诉解析器忽略这些错误?我试图

parser.setFeature(sax.handler.feature_validation, False) 

,但这也没有帮助。

有没有解决方案? SAX/Expat都可以。

+0

尽量避免叫它XML时,它不是。不存在“XML格式不正确”的问题 - 如果格式不正确,则不是XML。基本上,如果你不想遵循XML规则,那么你需要说出你想要遵循的规则。如果它是一个随机的字符序列,则解析器唯一可以合理地传递的是一个随机的字符序列。 –

您应该试一试Beautiful Soup。它的主要目的是解析HTML,即使存在畸形。您可能会发现它解析无效的XML没有太大麻烦。

+0

据我所知,它不提供顺序(类似SAX)的界面? –

+0

@DavidNemeskey:我不知道它是否会对您的特殊情况有所帮助,但请查看SoupStrainer:http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html#Fun%20With%20SoupSiner –

你还会用lxml吗?它有一个叫做iterparse的函数,它是一个事件驱动的解析(根据文档)“类似于SAX的时尚”,并且有一个参数来强制解析破碎的输入。这也很容易使用。

lxml iterparse tutorial

lxml iterparse class definition