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

在Python中解析xml时如何忽略不匹配的标记,python,xml,sax,expat-parser,Python,Xml,Sax,Expat Parser,我想用Python解析XML文件。我不需要分层标记结构——我只需要一个简单的SAX或基于Expat的解析器。但是,当XML文件格式不正确时,它们都会出现与标签不匹配相关的错误消息 有没有办法告诉解析器忽略这些错误?我试着 parser.setFeature(sax.handler.feature_validation, False) ,但这也没用 有解决办法吗?SAX或Expat都可以。您应该试一试。它的主要目的是在存在畸形的情况下解析HTML。您可能会发现它解析无效的XML不会有太多麻烦。您

我想用Python解析XML文件。我不需要分层标记结构——我只需要一个简单的SAX或基于Expat的解析器。但是,当XML文件格式不正确时,它们都会出现与标签不匹配相关的错误消息

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

parser.setFeature(sax.handler.feature_validation, False)
,但这也没用


有解决办法吗?SAX或Expat都可以。

您应该试一试。它的主要目的是在存在畸形的情况下解析HTML。您可能会发现它解析无效的XML不会有太多麻烦。

您也会使用lxml吗?它有一个名为
iterparse
的函数,它是一种事件驱动的解析(根据文档)“类似SAX的方式”,并有一个参数来强制解析断开的输入。它也很容易使用


据我记忆所及,它没有提供顺序(类似SAX)接口?@DavidNemeskey:我不知道它在您的特定情况下是否有帮助,但请查看SoupStrainer:如果没有,请尽量避免将其称为XML。没有“格式不正确的XML文件”这样的东西——如果格式不正确,那么它就不是XML。基本上,如果您不想遵循XML规则,那么您需要说明您想要遵循哪些规则。如果它是一个随机字符序列,那么解析器唯一能明智地传递的就是一个随机字符序列。