XMLStarlet 错误:xmlSAX2Characters:巨大的文本节点:内存不足

问题描述 投票:0回答:1

我在尝试使用 xmlstarlet 解析 xml 时遇到错误。

-:1.13408001: xmlSAX2Characters: huge text node: out of memory

SSWMgg5MqED5Tjk9jjkda0P2fLNLrxNrmp3CsbqGNFDdAPMLFsj6oPpzX0C6GSGVBjLKRz0oSVh3fQ+f ^ -:1.13408001: Extra content at the end of the document SSWMgg5MqED5Tjk9jjkda0P2fLNLrxNrmp3CsbqGNFDdAPMLFsj6oPpzX0C6GSGVBjLKRz0oSVh3fQ+f

关于如何处理此错误有什么建议吗?或者,忽略导致此问题的标签并转到下一个节点?

谢谢!

xml xmlstarlet
1个回答
0
投票

最近我做了一个补丁来制作

xmlstarlet
使用“巨大”节点和“大线”。需要重建程序 来自源代码。

引用自述文件:

此补丁为

xmlstarlet
添加了2个全局选项, 可在子命令
elements
select
edit
format
canonic
validate
transform

  • --huge

    使用
    libxml2
    XML_PARSE_HUGE
    加载 XML 文件 解析器选项。如果没有此选项,解析器将失败并显示 “xmlSAX2Characters:巨大的文本节点:内存不足”错误 加载大于 10 MB 的文本节点。 (
    xmlstarlet
    pyx
    子命令使用 SAX API,没有这样的限制。) 在
    libxml2
    中,
    XML_PARSE_HUGE
    选项默认处于禁用状态 防止拒绝服务攻击。

  • --big-lines

    使用
    libxml2
    XML_PARSE_BIG_LINES
    解析器选项加载 XML 文件。 这允许正确报告大于 65535 的行号 在错误消息中以及(对于
    select
    transform
    )在输出中
    saxon:line-number
    扩展名。 目前此选项有一个未解决的问题 表明它仅限于文本节点,但是,它似乎有 现已解决,因为行号已按预期输出 除了固定在第
    /
    行的根节点 (
    -1
    ) 之外的节点类型。

© www.soinside.com 2019 - 2024. All rights reserved.