gpt4 book ai didi

c - 如何使用 expat 找到流中 XML 文档的结尾?

转载 作者:行者123 更新时间:2023-11-30 17:13:35 26 4
gpt4 key购买 nike

我有一个二进制流,其中包含串联的 XML 文档。使用如下调用以任意大小的 block 处理流:

int expat_status = XML_Parse(parser->expat, buffer, buffer_size, 0);

如何检测特定数据 block 包含当前解析的 XML 文档的最后一个字节并检索其位置,以便我可以从下一个字节重新启动解析器以解析流中后面的下一个 XML 文档?

最佳答案

经过一段时间的尝试,迄今为止我找到的最佳解决方案是监视 XML_Parse 是否有错误代码 XML_ERROR_JUNK_AFTER_DOC_ELEMENT。在这种情况下,可以使用 XML_GetCurrentByteIndex 来获取流中包含“垃圾”的第一个字节的索引。

来自 expat 文档(关于 XML_GetCurrentByteIndex 和该组中的其他函数):

The position reported is that of the first of the sequence of characters that generated the current event (or the error that caused the parse functions to return 0.)

该索引相对于文档流的开头,因此必须累积后续调用 XML_Parse 所消耗的字节数,以计算当前 block 中附加数据的长度。

然后,解析器可以重新启动并从当前 block 内的计算位置运行,以开始处理流中后面的另一个 XML 文档。

关于c - 如何使用 expat 找到流中 XML 文档的结尾?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30727216/

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