在使用C解析大型XML页面时如何解决'返回null'

问题描述 投票:0回答:1

我正在尝试使用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解析器函数解决这种情况?

c xml-parsing libxml2 clob
1个回答
0
投票

如果一切适用于少于400KB的XML,我相信问题是因为你的sData缓冲区。您应该检查缓冲区是否有足够的空间容纳大文件(超过400kb):

  • 你为sData分配了多少内存?
  • strlen(sData)有效吗?
© www.soinside.com 2019 - 2024. All rights reserved.