如何用libxml2库保存带有BOM的xml文件
时间:2010-06-02 来源:championwxd
这短时间的工作中遇到了解析修改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;
欢迎交流!~~~呵呵~~~
经过测试只要在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}; |
欢迎交流!~~~呵呵~~~
相关阅读 更多 +