如何让Expat支持中文XML

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

示例代码:http://download.csdn.net/source/1452739

Expat源代码:http://download.csdn.net/source/1450419

        代码中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 ]

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值