你不再需要TinyXML,推荐RapidXML
来源:互联网 发布:windows怎么录屏 编辑:程序博客网 时间:2024/04/19 14:06
目前我公司开发的Nexus Engine的底层对象序列化使用了TinyXML来读写XML文件。TinyXML有两个不爽的地方,一是它的接口使用FILE*,另外一个是它对wchar_t不能很好的支持。前阵子看Boost库的更新中多了一个PropertyTree,他在处理XML时用到了另外一个小的库--RapidXML。既然间接的是Boost库的一部分,所以是值得一试的。于是找到其官方网站(http://rapidxml.sourceforge.net/ )研究了一番。一看之下,甚是满意,也推荐给大家看看! 首先就是速度,据它自己宣称比TinyXML快30到60倍 ,比Xerces DOM快50到100倍!详细的测试比较请见其用户手册(http://rapidxml.sourceforge.net/manual.html )的“4. Performance ”一节。 其次它的设计非常的简洁,只依赖于标准库中的几个基本的类。它的输入输出都是字符串,这样很好,一个库就应该关注自己核心的内容,做尽量少的事情。它的API其实和TinyXML倒是有几分相似,用过TinyXML的人应该很容易上手: template template template 下面还是看一个具体的例子来体验一下,下面是TinyXML官方教程中创建XML文档的一段代码:TinyXML主要接口类RapidXML的主要接口类class TiXmlDocument
class xml_document
class xml_node
class xml_attribute
下面是使用RapidXML实现类似功能的代码:
- void build_simple_doc_by_rapidxml()
- {
- xml_document<> doc;
- xml_node<>* decl = doc.allocate_node(node_declaration);
- xml_attribute<>* decl_ver =
- doc.allocate_attribute("version", "1.0");
- decl->append_attribute(decl_ver);
- doc.append_node(decl);
- xml_node<>* node =
- doc.allocate_node(node_element, "Hello", "World");
- doc.append_node(node);
- string text;
- rapidxml::print(std::back_inserter(text), doc, 0);
- // write text to file by yourself
- }
下面是使用RapidXML分析XML的样例代码:
- void parse_doc_by_rapidxml(char* xml_doc)
- {
- xml_document<> doc; // character type defaults to char
- doc.parse<0>(xml_doc); // 0 means default parse flags
- xml_node<> *node = doc.first_node("Hello");
- string node_val = node->value();
- }
好东西,大家分享!:D
- 你不再需要TinyXML,推荐RapidXML
- 你不再需要TinyXML,推荐RapidXML
- 你不再需要TinyXML,推荐RapidXML
- XML之TinyXML推荐RapidXML
- Cocos2dx---------------- TinyXml 解析 XML(推荐使用rapidxml)
- Cocos2dx---------------- TinyXml 解析 XML(推荐使用rapidxml)
- Cocos2dx---------------- TinyXml 解析 XML(推荐使用rapidxml)
- Cocos2dx-TinyXml 解析 XML(推荐使用rapidxml)
- Cocos2dx---------------- TinyXml 解析 XML(推荐使用rapidxml)
- TinyXml 与 Rapidxml效率对比
- 你可能不再需要Underscore
- 你可能不再需要Underscore
- SlimXml和TinyXml,RapidXml的性能对比
- SlimXml和TinyXml,RapidXml的性能对比
- SlimXml和TinyXml,RapidXml的性能对比
- c/c++ XML 读写 tinyXML rapidXML slimXML LibXML XMLBooster squashXML
- 推荐:你可能需要的在线电子书
- JavaEE 不再需要 Ajax
- c++中char * 和 char []的区别(转)
- 结果第一
- 高通baseband多媒体简介
- 第七讲 IO输入与输出
- 软中断和硬中断的区别(转)
- 你不再需要TinyXML,推荐RapidXML
- 冯诺依曼结构和哈佛结构的区别(转)
- 需求规格说明书模板
- POJ2823
- 递归问题
- 机器学习方法的PPT
- Android intent intent-filter
- 论文写作以及专业英语翻译网站
- SplitContainer扩展可以关闭左边