python - 需要在 Python 中使用 BeautifulSoup 将 XML 文件作为流读取

标签 python xml

我有一个难题。

我需要从各种来源读取非常大的 XML 文件,因此这些文件通常是无效的 XML 或格式错误的 XML。我仍然必须能够读取文件并从中提取一些信息。我确实需要获取标签信息,所以我需要 XML 解析器。

是否可以使用 Beautiful Soup 将数据作为流而不是整个文件读取到内存中?

我尝试使用 ElementTree,但我不能,因为它会阻塞任何格式错误的 XML。

如果 Python 不是用于该项目的最佳语言,请添加您的建议。

最佳答案

据我所知,Beautiful Soup 没有流式 API。但是,您还有其他选择。

解析大型 XML 流的经典方法是使用面向事件的解析器,即 SAX。在 Python 中,xml.sax.xmlreader。它不会因格式错误的 XML 而窒息。您可以避免文件的错误部分并从其余部分提取信息。

然而,SAX 是低级的,并且边缘有点粗糙。在python语境下,感觉糟透了。

另一方面,xml.etree.cElementTree 实现具有更好的界面,速度非常快,并且可以通过 iterparse() 方法处理流.

如果您能找到管理错误的方法,

ElementTree 会更胜一筹。

关于python - 需要在 Python 中使用 BeautifulSoup 将 XML 文件作为流读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21740376/

相关文章:

python - 防止列表推导式中除以零

sql - 使用 SQL Server 从复杂的 XML 结构中读取值

c# - 在 XSLT 中最后一次出现字符后获取子字符串

sql - 如何从 SQL Server 2008 返回 XML,该 XML 的结构具有多个选择共享一个公共(public)父级

php - 获取最后一个子节点的节点值

python - Google App Engine,上传图像

python - 根据另一个数据帧的值更新数据帧

python - 使用 python 将 NSG 连接到子网

xml - 使用XSLT基于字符串模式自动创建xml模板

python - 需要 SimPy 模拟可用性方面的帮助