首页 > 解决方案 > 为什么我会收到错误,XML_IO_FLUSH,使用 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;
}

虽然它产生了预期的长度,但崩溃了。

标签: xmlfopenlibxml2

解决方案


我能够通过使用xmlSaveFile()而不是解决这个问题xmlDocDump()


推荐阅读