我正在尝试使用libxml2-2.7.6从Redhat Linux 5.5、64bit中的Oracle DB解析巨大的XML Clob数据

但是,当我尝试解析超过400KB(409600字节)的XML时,xml解析器功能'xmlParseMemory'返回了空指针。

(成功从XML Clob数据加载到C中的字符串,检查字符串'sData'是否正确填充了数据。)

xmlDocPtr xDoc;
...
xDoc = xmlParseMemory(sData, strlen(sData));
if(xDoc == NULL)    return -1;
...


当XML的大小小于400KB时,解析器可以正常工作。
但是,只有当大小超过400KB时,paser才会返回空指针,尽管字符串数据为'sData'。

而且我已经在xmlInitParser之前使用xmlMemSetup尝试了xmlReadDoc,xmlReadMemory。

如何使用xml解析器函数解决这种情况?

最佳答案

如果所有内容都适用于小于400KB的XML,我相信问题是由于您的sData缓冲区引起的。
您应该检查缓冲区是否有足够的空间容纳大文件(大于400kb):


您为sData分配了多少内存?
strlen(sData)是否有效?

08-27 14:30