中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > 综合其它
如何让Expat支持中文XML
作者:未知 时间:2005-07-27 23:20 出处:CSDN 责编:chinaitpower
              摘要:如何让Expat支持中文XML

        刚刚学习使用Expat,却发现Expat并不支持中文。后来查找相关资料,得知Expat不支持gb2312编码格式,主要支持UTF-8编码格式。然而我们在程序中传递数据时,往往是用的gb2312格式文本的,于是想找出办法解决之,想到两种办法:
    1、改写Expat源代码,这样效率高,但不方便今后Expat代码的升级;
    2、首先将gb2312格式的文本转换为UTF-8格式文本,然后让Expat解析,解析出的数据再转换为gb2312格式以方便处理。效率较第一种方法低。
        最终选择了第二种方法解决该问题。

示例代码:http://www.yanghan.net/codes/ExpatSaxDemo.rar

        代码中CCodingConv为gb2312和UTF-8互相转换的类,CGB2312XML为接收解析数据的类,使用SAX方式解析,该类支持gb2312格式的xml文件,当然也可以支持UTF-8格式的xml文件。
        为便于理解,Demo程序将解析出的xml数据仍按xml的样子输出到屏幕上,且将"<"、">"符号换为了"["、"]"。

以下便是输出结果:

[library]
  [book format="16开" pages="900"]
        [!--This is a comment demo--]
        [书名]C++程序设计语言(特别版)[/书名]
        [author]
                [name]Bjarne Stroustrup[/name]
                [nationality]United States[/nationality]
        [/author]
        [翻译]
                [译者]裘宗燕[/译者]
                [出版社]机械工业出版社[/出版社]
        [/翻译]
  [/book]
[/library]


Expat源代码:http://www.yanghan.net/codes/Expat-1.95.8.rar

注意:本示例程序使用的Expat静态连接库,然而在编译时遇到连接错误,后来将expat_external.h中的
#define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
改为如下:
#ifdef _EXPAT_USE_STATIC_LIB
 #define XMLPARSEAPI(type) type
#else
 #define XMLPARSEAPI(type) XMLIMPORT type XMLCALL
#endif
然后在工程设置中添加_EXPAT_USE_STATIC_LIB宏从而得以解决。


关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有