我需要从服务器解析大的xml文件。我们目前使用流来读取这些文件,如下所示:
class stream
{
size_t getSize();
size_t read(void* buf, size_t offset, size_t size);
}
但我可以找到两个接口:
XMLPUBFUN int XMLCALL
xmlSAXUserParseFile (xmlSAXHandlerPtr sax,
void *user_data,
const char *filename);
XMLPUBFUN int XMLCALL
xmlSAXUserParseMemory (xmlSAXHandlerPtr sax,
void *user_data,
const char *buffer,
int size);
我该如何解决这个问题?感谢。
答案 0 :(得分:0)
使用libxml2的push parser interface。通过调用xmlCreatePushParserCtxt初始化解析器。然后从服务器读取您的数据并与xmlParseChunk一起处理。这将调用SAX回调。最后,使用xmlFreeParserCtxt释放解析器上下文。