TInyXML 下载http://sourceforge.net/projects/tinyxml/
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的人应该很容易上手:
TinyXML主要接口类 RapidXML的主要接口类 class tixmlDocument template
class xml_documentclass tixmlNode template
class xml_nodeclass tixmlAttribute template
class xml_attribute
下面还是看一个具体的例子来体验一下,下面是TinyXML官方教程中创建XML文档的一段代码:
- voidbuild_simple_doc()
- {
- //Makexml:World
- tixmlDocumentdoc;
- tixmlDeclaration*decl=newtixmlDeclaration("1.0","","");
- tixmlElement*element=newtixmlElement("Hello");
- tixmlText*text=newtixmlText("World");
- element->LinkEndChild(text);
- doc.LinkEndChild(decl);
- doc.LinkEndChild(element);
- doc.SaveFile("madeByHand.xml");
- }
- voidbuild_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);
- stringtext;
- rapidxml::print(std::back_inserter(text),doc,0);
- //writetexttofilebyyourself
- }
下面是使用RapidXML分析XML的样例代码:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。