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);

其实就是加在文件最前面就可以了。,,终于解决问题了。。。

  

posted @ 2014-07-12 23:18  杨小聪  阅读(235)  评论(0)    收藏  举报