gpt4 book ai didi

xml - XSLT 1.0 (xsltproc) - 无法解析巨大的 XML

转载 作者:行者123 更新时间:2023-12-01 19:51:59 24 4
gpt4 key购买 nike

我正在尝试使用 xsltproc 解析一个 13,00,000 行长、大小为 56 MB 的输入 xml 文件。我收到以下错误:

input.xml:245393: parser error : internal error: Huge input lookup
"description" : "List of values for possible department codes"
^
unable to parse input.xml

我的 xsltproc 能够处理一个 9,30,000 行长、大小为 48 MB 的 xml 文件。

事实上,我尝试通过删除不必要的部分将 xml 行减少到 600,000 行。尽管如此,还是出现同样的错误,这很奇怪,因为它能够解析 900,000,但不能解析 600,000。

如何解决这个问题?

最佳答案

根据以下代码片段在 Python 中编写您自己的 xsltproc:

import argparse

from lxml import etree

parser = argparse.ArgumentParser()
parser.add_argument('stylesheet', help='XSLT style sheet', type=argparse.FileType('r', encoding='utf-8'))
parser.add_argument('input', help='XML input file(s)', nargs='*', type=argparse.FileType('r', encoding='utf-8'))
parser.add_argument('--output', help='The output file to create.', type=argparse.FileType('wb'))

args = parser.parse_args()

transform = etree.XSLT(etree.parse(args.stylesheet))

xml_parser = etree.XMLParser(huge_tree=True)

for xml in args.input:
transform(etree.parse(xml, xml_parser)).write_output(args.output)

这使用 lxml正如 this answer 中所建议的.

huge_tree=True 参数设置 libxml2 中相应的解析器选项,从而使其能够处理大文件。请参阅Parser options了解更多信息。

关于xml - XSLT 1.0 (xsltproc) - 无法解析巨大的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59313985/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com