2

我从 SSH2 连接中串行接收最大 16k 的 XML 数据。每次我收到一个块时,我只需通过 parse_more 函数将它传递给 XML::Parser 模块。这真的很好用。我正在研究切换到使用 SAX 解析器,但我找不到 parse_more 函数。我发现的所有示例都使用 parse_uri 或 parse_string。我希望 parse_string 是 parse_more 的等价物,但它需要内存中的整个字符串,这在很大程度上违背了使用 SAX 的目的。有谁知道如何使用 SAX 处理数据块?

顺便说一句,是否有人发现 perl 模块文档非常糟糕?在许多情况下,他们甚至至少没有列出可用的功能。

4

2 回答 2

0

你有没有找到答案?我之前问过一个类似的问题,但现在偶然发现XML::SAX::Expat::Incremental这似乎正是我们都需要的。它具有parse_more功能,您只需要在获取字符串块时传递它们。

我没有时间测试更大的数据集,但初始测试工作正常。

于 2014-12-24T09:10:45.553 回答
0

你看过XML::Parser::PerlSAX吗?听起来它不会将整个文档树保存在内存中

[编辑]相反,它使用文件句柄来获取 XML 片段。也许您可以创建一个类似文件句柄的对象来将块传递给 XML::Parser?

于 2013-02-19T23:34:33.097 回答