LoadXML的正确使用(原文:http://blog.sina.com.cn/s/blog_68530d690100mlcp.html)
来源:互联网 发布:js日历代码 编辑:程序博客网 时间:2024/05/17 22:38
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方法优势的地方。
目前程序出现的问题暂都是由这几个原因造成。未来出现新问题时再做补充!
- LoadXML的正确使用(原文:http://blog.sina.com.cn/s/blog_68530d690100mlcp.html)
- 移动时代的信息需求(原文链接http://blog.sina.com.cn/s/blog_593af2a70101ac1k.html)
- cookie与session(上) 转载 原文链接http://blog.sina.com.cn/s/blog_4745d1c10100ihnq.html
- cookie与session(下) 转载 原文链接http://blog.sina.com.cn/s/blog_4745d1c10100ihnq.html
- JAVA学习方向(原文:http://blog.sina.com.cn/s/blog_9671d5180101lj4q.html)
- UIAlertView的使用 via: http://blog.sina.com.cn/s/blog_5aeb9f7b0101flpj.html
- C++map的基本操作和使用 http://blog.sina.com.cn/s/blog_65ed0e8a01010yd3.html
- Android中Uri的使用转自http://blog.sina.com.cn/s/blog_821e2bb10100spxv.html
- freemarker的使用,转自http://blog.sina.com.cn/s/blog_64c505480100sxuh.html
- http://blog.sina.com.cn/s/blog_5f8817250100g1dj.html
- http://blog.sina.com.cn/s/blog_5dfb7f4d0100j5e6.html
- http://blog.sina.com.cn/s/articlelist_1587621077_0_1.html
- http://blog.sina.com.cn/s/blog_8820018a0100w7t7.html
- http://blog.sina.com.cn/s/articlelist_1973273451_0_1.html
- http://blog.sina.com.cn/s/articlelist_1454293451_0_1.html
- http://blog.sina.com.cn/s/articlelist_1229508141_0_1.html
- http://blog.sina.com.cn/s/blog_4e6dffee0100hid1.html
- http://blog.sina.com.cn/s/blog_4ac0a0d30100cp9d.html
- Leetop/Ext-Desktop Web桌面 项目开发实录<持续更新中....>
- SQL 2000动态交叉表
- 各种排序算法的稳定性和时间复杂度小结
- Android Audio代码分析13 - AudioTrack::getPosition函数
- 我的第一篇csdn博客
- LoadXML的正确使用(原文:http://blog.sina.com.cn/s/blog_68530d690100mlcp.html)
- Activity跳转页面切换漂亮效果(转)
- Android 2.1下调试3G模块
- dev/zero 是什么
- jquery的不同写法可能造成浏览器的不兼容问题!
- xml的两种解析方法
- Gingerbread build on Arch Linux x86_64 with gcc 4.6.0 / small patch
- python3之python的核心数据类型(列表)
- 实体数据库命名约定