cpp_learners 2021-12-23 19:26 采纳率: 0%
浏览 21
已结题

mini-xml如何支持解析中文?

最近在研究mini-xml,使用C语言 和 mini-xml 去生成和解析xml。
但是生成的xml可以有中文,解析却解析不了中文,不知道该怎么解决!
例如从文件读取已经写好的xml文件,想去初始化根时,初始化失败,就因为是有中文在里面,如果没有中文就可以初始化成功!


void parse_XML() {
    FILE *fp;
    errno_t err = fopen_s(&fp, FILE_NAME, "r");    // 只读方式打开文件
    if (err != 0) {
        printf("文件打开失败!\n");
        return;
    }


    char strXML[1024] = { 0 };
    // 读取文件中的内容
    int size = fread(strXML, sizeof(char), sizeof(strXML) / sizeof(strXML[0]), fp);
    if (size == 0) {
        printf("读取文件内容失败!\n");
        return;
    }
    fclose(fp);



    // 载入一个xml字符串到一个XML节点树(返回值:第一个节点或者NULL代表字符串中有错误)
    mxml_node_t *xml = mxmlLoadString(NULL, strXML, MXML_OPAQUE_CALLBACK);  /*************就在这里初始化返回NULL********************/
    if (xml == NULL) {
        printf("xml字符串错误!\n");
        return;
    }


    //mxml_node_t *xml = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);
    //if (xml == NULL) {
    //    printf("xml字符串错误!\n");
    //    return;
    //}


    // 将xml转换为字符串
    char *string = mxmlSaveAllocString(xml, MXML_NO_CALLBACK);
    printf("%s\n", string);
    free(string);


    // 找到<Book>子节点
    mxml_node_t *Book = mxmlFindElement(xml, NULL, NULL, NULL, "Book", MXML_DESCEND);
    if (Book == NULL) {
        printf("没有找到Book子节点!\n");
        return;
    }
    printf("Book = %s\n", mxmlGetElement(Book));







}

读取的xml:

img

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 12月31日
    • 创建了问题 12月23日

    悬赏问题

    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题
    • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
    • ¥15 YoloV5 第三方库的版本对照问题
    • ¥15 请完成下列相关问题!
    • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?