LoadXML的正确使用(原文:http://blog.sina.com.cn/s/blog_68530d690100mlcp.html)


LoadXML是MS提供的XMLDom接口中的一个函数,用于将字符串载入一个XML document,该函数的使用存在很多注意事项,在近来的开发调用中总结出以下几点:
1、字符串必须是一个完整的xml document或者well-formed的片段,否则会出现异常退出的错误。常在编程中,因内存分配不足等原因,使的传入的字符串于某处意外截断,尤其当字符串过长时,该错误不易发现。调试状态下,可通过获取字符串的长度后对末尾部分观察来判断,对较短的片段,可简单的将字符串复制到Altova Spy等专用xml编辑器中观察是否well-formed.
2、 LoadXML 方法总是采用只在 UCS-2 或 UTF-16 中编码的 Unicode BSTR,所以当字符串是UTF-8编码格式时,需要首先对其进行转换,才能够传入函数,否则即使该函数成功执行,后续对dom结构中内容的访问也会出现错误,尤其是出现中文乱码的情况.
3、参数是 BSTR类型,当string长度过长时,如果通过强制转换 (_bstr_t)str传入函数,则在转换时会出现overflow的异常,故正确的方法是先利用AllocSysString将CString转换为BSTR,再传入函数。
4、若采用Load方法根据本地文件路径获取xml document,则当原始字符串存入目标文件时,或根据系统编码类型对文件编码,故存在要点2的隐患,这是该方法比Load方法优势的地方。
目前程序出现的问题暂都是由这几个原因造成。未来出现新问题时再做补充!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值