C++使用TinyXml2解析Xml
2017-03-26 21:35
405 查看
1. TinyXml2
简介
TinyXml一直是一个非常好用的
Xml解析工具 , 最新的开源版本
TinyXml2相对于旧版本的
TinyXml使用更少的内存 , 更快 , 并且使用更少的内存分配 , 现在是所有开发的重点 , 经过良好的测试 , 是您的最佳选择 , 除非您有维护TinyXML-1代码的要求 ;
TinyXml2使用类似的
API到
TinyXml1和相同的丰富的测试用例 , 但解析器的实现是完全重写的 , 使其更适合在游戏中使用 ;
TinyXml2不需要
STL, 但也降低了所有的
STL支持 , 所有字符串都是查询并设置为
const char *, 这允许使用内部分配器 , 并保持代码更简单 ;
两个解析器共同点 :
使用类似的API很简单
基于DOM的解析器
UTF-8 Unicode支持 http://en.wikipedia.org/wiki/UTF-8
TinyXml2的优点 :
所有未来开发的重点
更少的内存分配 (1/10到1/100) , 使用更少的内存 (大约TinyXml1的40%) , 并且更快
无STL要求
更现代的C++ , 包括一个正确的命名空间
适当和有用的处理空白
TinyXML-1的优点 :
支持一些
C++
STL约定 : 流和字符串
非常成熟和调试良好的代码库
2. 在 C++
中使用 TinyXml2
在 C++中使用
TinyXml2, 首先去
Github官网下载源码 https://github.com/leethomason/tinyxml2 , 下载
zip文件后 , 解压出来
将解压出来文件里面的
tinyxml2.h和
tinyxml2.cpp文件拷贝到工程目录源码文件夹下 , 在项目中添加这两个文件
在代码头文件中引入头文件和命名空间
#include "tinyxml2.h" using namespace tinyxml2;
在代码中使用
TinyXml2解析文档
Xml文档如下
<?xml version="1.0"?> <Group> <User> <Name>John</Name> <Age>18</Age> </User> </Group>
代码中载入并解析改文件
XMLDocument docXml; XMLError errXml = docXml.LoadFile("example.xml"); if (XML_SUCCESS == errXml) { XMLElement* elmtRoot = docXml.RootElement(); XMLElement *elmtUser = elmtRoot->FirstChildElement("User"); XMLElement *elmtName = elmtUser->FirstChildElement("Name"); if (elmtName) { const char* pContent= elmtName->GetText(); printf( "%s", pContent); } XMLElement *elmtAge = elmtName->NextSiblingElement(); if (elmtAge) { const char* pContent= elmtAge->GetText(); printf( "%s", pContent); } }
或者直接解析字符串
XMLDocument docXml; char* pXml = "<Item>Hello World</Item>"; XMLError errXml = docXml.Parse(pXml); if (XML_SUCCESS == errXml) { XMLElement* elmtRoot = docXml.RootElement(); if (elmtRoot) { const char* pContent= elmtRoot->GetText(); printf( "%s", pContent); } }
注意 : 如果命名空间冲突的话 , 可能会导致
XMLDocument对象不明确 , 使用
tinyxml2::XMLDocument来使用
个人网站: Github , 欢迎点击给星
相关文章推荐
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 《转》 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml(2)
- 在C++中使用TinyXML2解析xml
- 《转》 在C++中使用TinyXML2解析xml
- 在C++中使用TinyXML2解析xml
- C++使用tinyxml创建和解析xml文件(本文用于cocos2dx)
- 【类库解析】一个轻量级C++ xml解释器 TinyXML的使用方法
- C++使用TinyXML生成和解析xml文件
- XML解析简介及Xerces-C++简单使用举例
- 毕业论文中使用的XML读取和制造工具!!!C++ 使用TinyXML解析XML文件
- XML解析简介及Xerces-C++简单使用举例
- [libexpat]_[XML处理]_[C/C++使用libexpat库以数据流(SAX模型)的方式读取(解析)大XML文件]