我在尝试使用 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
关于如何处理此错误有什么建议吗?或者,忽略导致此问题的标签并转到下一个节点?
谢谢!
最近我做了一个补丁来制作
xmlstarlet
使用“巨大”节点和“大线”。需要重建程序
来自源代码。
引用自述文件:
添加了2个全局选项, 可在子命令xmlstarlet
、elements
、select
、edit
、format
、canonic
和validate
:transform
--huge
使用的libxml2
加载 XML 文件 解析器选项。如果没有此选项,解析器将失败并显示 “xmlSAX2Characters:巨大的文本节点:内存不足”错误 加载大于 10 MB 的文本节点。 (XML_PARSE_HUGE
的xmlstarlet
子命令使用 SAX API,没有这样的限制。) 在pyx
中,libxml2
选项默认处于禁用状态 防止拒绝服务攻击。XML_PARSE_HUGE
--big-lines
使用的libxml2
解析器选项加载 XML 文件。 这允许正确报告大于 65535 的行号 在错误消息中以及(对于XML_PARSE_BIG_LINES
和select
)在输出中transform
扩展名。 目前此选项有一个未解决的问题 表明它仅限于文本节点,但是,它似乎有 现已解决,因为行号已按预期输出 除了固定在第saxon:line-number
行的根节点 (/
) 之外的节点类型。-1