c - 用C解析巨大的XML页面时如何解决 'returned null'

标签 c xml-parsing libxml2 clob

我正在尝试使用 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/

相关文章:

c - 程序在调用回调函数时因段错误而崩溃

python - 使用数字作为标签名称来解析损坏的 XML

c - "Undefined reference to"在 Eclipse 中使用 C 语言的 libxml2

python - 为 python3 安装 libxml2 绑定(bind)

c - 使用 C 的 Eclipse 中出现 "First defined here"错误

c - 在 osx 上编译简单 C 程序时未找到 header 错误

c - 使用 gcc 禁止默认库路径

xml - Perl XML::LibXML 与 SOAP::SOM

c - 我在这里删除堆栈吗?

java - 这里使用哪个 XML 解析器?