我正在尝试使用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)
是否有效?