从大型 XML 文件高效提取少量数据

从大型 XML 文件高效提取少量数据

我需要从大型 XML 文件中提取一些字段内容。我目前通过以下方式组合来实现此目的:xmlstarlet以及 Python 脚本(使用 ElementTree)。我们的想法是使用 xmlstarlet 修剪 XML 文件中的无用数据,然后使用 Python 处理较小的文件(直接在文件上使用 Python 是不可行的 - 内存和 CPU 被占用,有些文件从未被处理过)。它基本上可以工作,但是:

  • 效率不高
  • 它不是特别灵活
  • 它相当丑陋(这是我最不担心的问题,但从维护的角度来看仍然是一个问题)

我正在寻找有关如何最好地处理这种情况的建议(提取的数据量约为初始文件的 5%)。我愿意接受任何合理的建议(一种特定的语言,也许将 XML 文件转储到数据库中,然后在转储数据库之前提取我需要的内容?,......)

答案1

您使用 ElementTree 吗iterparse?它应该能够高效地处理大量输入,而无需在内存中解析整个树(这通常是 XML 解析器的工作所在)。

您可以在 stackoverflow 上找到大量用例和示例。

相关内容