我正在尝试使用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时,Parser会工作。但是只有当超过400KB时,paser才会返回空指针,尽管字符串数据正确,'sData'。
我已经在xmlInitParser之前使用xmlMemSetup尝试了xmlReadDoc,xmlReadMemory。
如何使用xml解析器函数解决这种情况?
如果一切适用于少于400KB的XML,我相信问题是因为你的sData
缓冲区。您应该检查缓冲区是否有足够的空间容纳大文件(超过400kb):
sData
分配了多少内存?strlen(sData)
有效吗?