微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我在使用 xmlDocDump 时收到错误 XML_IO_FLUSH

如何解决为什么我在使用 xmlDocDump 时收到错误 XML_IO_FLUSH

使用模式“w”、“w+”和“w+b”,我得到 XML_IO_FLUSH。

打开文件后,我可以成功调用 fputs() 和 fclose() 并获得正确的预期结果。

顺便说一句:我使用 xmlDocDumpformatMemory() 解决了这个问题,并将文件 IO 与 libxml2 分开处理。

编辑:使用此代码调用 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,"size = %d",rtn_val); DEBUG_MSG(dan);
    fclose(fp);
    
    return rtn_val;
}

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

解决方法

我可以通过使用 xmlSaveFile() 而不是 xmlDocDump()

来解决这个问题

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。