libxml2 C库:SAX推送解析器上下文:传递null终止字符串时出现xmlParseChunk错误

时间:2014-02-20 18:07:43

标签: c xml parsing sax libxml2

我使用libxml2 xmlParserCtxtPtr创建了一个xmlCreatePushParserCtxt,并在此过程中将指针传递给自定义xmlSAXHandler

然后,我将XML文档文件流中的一行读入字符缓冲区,用\0空终止字符替换行尾字符。

然后按如下方式传递此chars缓冲区:

xmlParseChunk(pParserCtxt, chars, numChars, 0);

numChars是缓冲区起始处的字符数,包括空终止字符。

我的问题是没有调用任何SAX处理程序,xmlParseChunk函数返回以下枚举错误(47):

XML_ERR_PI_NOT_FINISHED

对于在字符缓冲区中传递的每个块都会发生这种情况,但我相信解析器会从它处理的初始空终止字符串中陷入错误状态:

<?xml version="1.0" encoding="UTF-8"?>

由于libxml2库的文档稀疏,其内联注释也是如此,我希望有更多图书馆经验的人可以指出我的错误?

感谢您一看。

1 个答案:

答案 0 :(得分:0)

您不得将NUL字符传递给xmlParseChunk。只需传递没有终止字符的块。有一个size参数来传递一个块的长度。

相关问题