为什么使用 xmlDocDump 时会出现错误 XML_IO_FLUSH
Why do I get the error, XML_IO_FLUSH, with xmlDocDump
使用模式“w”、“w+”和“w+b”,我得到 XML_IO_FLUSH。
打开文件后,我可以成功调用 fputs() 和 fclose() 并获得正确的预期结果。
顺便说一句:我使用 xmlDocDumpFormatMemory() 解决了这个问题,并处理了与 libxml2 分开的文件 IO。
编辑:使用此代码调用 setvbuf() 时,我能够超越原始问题:
MSEXPORT int WriteXMLDocFile(xmlDocPtr doc, char* filename) // Write Doc to file
{
#include <stdio.h>
FILE* fp = fopen(filename, "w+");
if (fp == NULL) return -2;
#define BUFSIZE 1024
char buf[BUFSIZE];
int err = setvbuf(fp, buf, _IOFBF, BUFSIZE);
snprintf(dan, BUFSZ, "err = %d BUFSIZ = %d", err, BUFSIZE); DEBUG_MSG(dan);
int rtn_val = xmlDocDump(fp, doc);
snprintf(dan, BUFSZ, "size = %d", rtn_val); DEBUG_MSG(dan);
fclose(fp);
return rtn_val;
}
虽然它产生了预期的长度,但崩溃了。
我使用 xmlSaveFile()
而不是 xmlDocDump()
解决了这个问题
使用模式“w”、“w+”和“w+b”,我得到 XML_IO_FLUSH。
打开文件后,我可以成功调用 fputs() 和 fclose() 并获得正确的预期结果。
顺便说一句:我使用 xmlDocDumpFormatMemory() 解决了这个问题,并处理了与 libxml2 分开的文件 IO。
编辑:使用此代码调用 setvbuf() 时,我能够超越原始问题:
MSEXPORT int WriteXMLDocFile(xmlDocPtr doc, char* filename) // Write Doc to file
{
#include <stdio.h>
FILE* fp = fopen(filename, "w+");
if (fp == NULL) return -2;
#define BUFSIZE 1024
char buf[BUFSIZE];
int err = setvbuf(fp, buf, _IOFBF, BUFSIZE);
snprintf(dan, BUFSZ, "err = %d BUFSIZ = %d", err, BUFSIZE); DEBUG_MSG(dan);
int rtn_val = xmlDocDump(fp, doc);
snprintf(dan, BUFSZ, "size = %d", rtn_val); DEBUG_MSG(dan);
fclose(fp);
return rtn_val;
}
虽然它产生了预期的长度,但崩溃了。
我使用 xmlSaveFile()
而不是 xmlDocDump()