c语言使用libxml2库时因没有bom有些解析器无法解析
最近项目中用到xml文件,由于在我使用的是libxml2库,一切都很好用,写xml文件也很快,
创建一个doc = xmlNewDoc();然后利用这个doc添加根和其它一些属性,xmlNewChild添加节点,
xmlDocSetRootElement设置根节点,这些都不是问题。然后保存文件可以用xmlSaveFromatFileEnc();
xmlSaveFile等几个函数,只是有格式化和无格式化问题。
现在问题出现了。我这样保存,用editplus打开看。文件格式为utf-8.没有错。然后就传过去根应用使用,
然后怎么也用不了。比较了下测试文件,除属性值不一样外其它都一样。这是什么问题,突然注意到测试的文件
为utf-8+??怎么多了个+。网搜得知是加了bom,原来 是这样。于是在自己的文件名前加上bom.
char BOMbuf[4] = {0xef,0xbb,0xbf,0};
fp = fopen("1.xml", "w+");
fprintf(fp, "%s", BOMbuf);
xmlDocDump(fp, doc);
xmlFreeDoc(doc);
fclose(fp);
其实就是加在文件最前面就可以了。,,终于解决问题了。。。

浙公网安备 33010602011771号