我正在尝试使用 libxml2-2.7.6 从 Redhat linux 5.5、64 位中的 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 时,尽管字符串数据“sData”正确,paser 仍返回空指针。
我已经在 xmlInitParser 之前尝试过使用 xmlMemSetup 来使用 xmlReadDoc、xmlReadMemory。
如何使用 xml 解析器函数解决这种情况?
最佳答案
如果小于 400KB 的 XML 一切正常,我相信问题出在您的 sData
缓冲区上。
您应该检查缓冲区是否有足够的空间容纳大文件(超过 400kb):
- 您为
sData
分配了多少内存? strlen(sData)
有效吗?
关于c - 用C解析巨大的XML页面时如何解决 'returned null',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55588150/