python - 将 python lxml.etree 用于巨大的 XML 文件

标签 python lxml

我想在 Python 中使用 lxml.etree 解析一个巨大的 xml (>200MB)。我尝试使用 etree.parse 加载 XML 文件,但由于文件大小,这不起作用:

etree.parse('file.xml')Traceback (most recent call last):
File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 2706, in lxml.etree.parse (src/lxml/lxml.etree.c:49958)
  File "parser.pxi", line 1500, in lxml.etree._parseDocument (src/lxml/lxml.etree.c:71797)
  File "parser.pxi", line 1529, in lxml.etree._parseDocumentFromURL (src/lxml/lxml.etree.c:72080)
  File "parser.pxi", line 1429, in lxml.etree._parseDocFromFile (src/lxml/lxml.etree.c:71175)
  File "parser.pxi", line 975, in lxml.etree._BaseParser._parseDocFromFile (src/lxml/lxml.etree.c:68173)
  File "parser.pxi", line 539, in lxml.etree._ParserContext._handleParseResultDoc (src/lxml/lxml.etree.c:64257)
  File "parser.pxi", line 625, in lxml.etree._handleParseResult (src/lxml/lxml.etree.c:65178)
  File "parser.pxi", line 565, in lxml.etree._raiseParseError (src/lxml/lxml.etree.c:64521)
lxml.etree.XMLSyntaxError: Excessive depth in document: 256 use XML_PARSE_HUGE option, line 1276, column 7

因为我想使用 xpath 表达式,所以我必须先解析文件。因此,我该如何解析 XML 文件?如何使用 XML_PARSE_HUGE 连接到 lxml.etree

谢谢!

最佳答案

尝试创建自定义 XMLParser 实例:

from lxml.etree import XMLParser, parse
p = XMLParser(huge_tree=True)
tree = parse('file.xml', parser=p)

关于python - 将 python lxml.etree 用于巨大的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11850345/

相关文章:

python在excel中读取大整数

python - 使用模板标签在html模板中求和

python - 您是否可以仅修改 XML 文件中的文本字符串并仍然保持 .docx 封装的完整性和功能?

python - 如何在没有尾部的情况下从 lxml 中的节点删除标签?

XML验证: 'No matching global declaration available for the validation root'

python - 是否有区分 Python 集成测试和单元测试的约定?

python - 随机打乱每行 numpy 数组中的项目

python - Splinter 浏览器自动化选择选项

lxml - Cython使用lxml和Jupyter Notebook编译错误(找不到'lxml\includes.pxd')

python - 试图抓取特定 <div> 下的所有文本,同时忽略 HTML 标签