Chinaunix首页 | 论坛 | 博客
  • 博客访问: 155114
  • 博文数量: 19
  • 博客积分: 901
  • 博客等级: 准尉
  • 技术积分: 268
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-14 23:58
文章分类

全部博文(19)

文章存档

2010年(19)

我的朋友

分类: C/C++

2010-06-02 15:39:49

  这短时间的工作中遇到了解析修改xml文件的问题,摸索之后,从解析到保存一路顺分的走了下来,可是最后的最后flash读xml文件之后显示的却是乱码,查了一些资料后发现原来是utf8的BOM惹的祸(前两篇文章为此部分知识)。

  经过测试只要在xml文件头加上BOM的话,FLASH就会正常显示,因为libxml2库不支持写入BOM,所以现在的问题是怎么将BOM写到文件头。查看libxml2的源码,发现在xmlsave.c文件里有这样一个接口:int xmlDocDump(FILE *F, xmlDocPtr cur),接口说明:Dump an XML document to an open FILE.  哈哈!!!这样就有办法了!
  1.把BOM保存到一个字符数组
  2.用fopen打开一个文件(用“w+”方式),将BOM字符数组写入文件
  3.调用xmlDocDump函数接口,将解析修改后的xml保存到刚打开的文件中
  4.关闭文件
  这样就实现了在xml文件的头部写入BOM。

仅保存部分的源码:

doc在解析之前定义:xmlDocPtr doc;

char BOMbuf[4] = {0xef,0xbb,0xbf,0};

fp = fopen("/tmp/tmpxml", "w+");
fprintf(fp, "%s", BOMbuf);
xmlDocDump(fp, doc);
xmlFreeDoc(doc);
fclose(fp);



欢迎交流!~~~呵呵~~~
阅读(1654) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~