一种基于简单递归思想的易操控xml解析封装(C++)
2015-04-17 10:34
441 查看
本文由 @lonelyrains 出品,转载请注明出处。
文章链接: http://blog.csdn.net/lonelyrains/article/details/45093007
技术要点:
1、基础xml解析库:tinyxml
2、XmlTree类
3、重载[],返回XmlTree类
4、实现Count函数,返回本级目录子节点的数目
针对如下的CMyString strRequestXml:(为了说明功能,把request结点分成两部分写)
可以实现:
1、实现基于字符串的构造函数:XmlTree *requestXml = new XmlTree(strRequestXml) ;
2、重载[]实现子XmlTree的子对象数组:XmlTree **subViewRequestXml = requestXml["request"][1]["view"];
3、实现当XmlTree只有一个结点时可以强转成CMyString: requestXml["request"][1]["view"]["event"].CMyString(),并可以Get/Set和直接赋值
4、实现本级子节点数目的Count: requestXml["request"][1].Count() == 2
5、实现非树形表示时的结点访问: reuestXml["request"][0]["version"] == "1.0"
6、扩展实现,可以考虑以后再扩展:XmlTree的插入和删除:requestXml["view"].insert(subViewRequestXml)
二级指针表示一级指针数组的第一个元素时可以互转,没问题,就像二维数组 arrayXY[][] 的 arrayXY == arrayXY[0];
所以上面的XmlTree **subViewRequestXml = requestXml["request"][0]["view"];
可以写成 XmlTree *subViewRequestXml = requestXml["request"][0]["view"]; 也可以写成XmlTree *subViewRequestXml = requestXml["request"]["view"];
文章链接: http://blog.csdn.net/lonelyrains/article/details/45093007
技术要点:
1、基础xml解析库:tinyxml
2、XmlTree类
3、重载[],返回XmlTree类
4、实现Count函数,返回本级目录子节点的数目
针对如下的CMyString strRequestXml:(为了说明功能,把request结点分成两部分写)
<?xml version='1.0' encoding='utf-8'?> <request version = '1.0' name = 'updateMainView'> <request> <requestType>updateUI</requestType> <view> <viewType>mainView</viewType> <viewId>view_1</viewId> <event>click</event> <listView> <id>listView_mainView</id> <selectedId>item_2</selectedId> </listView> </view> </request>
可以实现:
1、实现基于字符串的构造函数:XmlTree *requestXml = new XmlTree(strRequestXml) ;
2、重载[]实现子XmlTree的子对象数组:XmlTree **subViewRequestXml = requestXml["request"][1]["view"];
3、实现当XmlTree只有一个结点时可以强转成CMyString: requestXml["request"][1]["view"]["event"].CMyString(),并可以Get/Set和直接赋值
4、实现本级子节点数目的Count: requestXml["request"][1].Count() == 2
5、实现非树形表示时的结点访问: reuestXml["request"][0]["version"] == "1.0"
6、扩展实现,可以考虑以后再扩展:XmlTree的插入和删除:requestXml["view"].insert(subViewRequestXml)
二级指针表示一级指针数组的第一个元素时可以互转,没问题,就像二维数组 arrayXY[][] 的 arrayXY == arrayXY[0];
所以上面的XmlTree **subViewRequestXml = requestXml["request"][0]["view"];
可以写成 XmlTree *subViewRequestXml = requestXml["request"][0]["view"]; 也可以写成XmlTree *subViewRequestXml = requestXml["request"]["view"];
相关文章推荐
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系
- demo : 简单的 xslt 递归解析 xml 成 tree
- 解析xml几个方法的简单封装
- MYSQL的简单封装,学习基于托管的C++开发
- 简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- 【C++】基于C++的封装和运算符重载的思想,实现基于通讯录类的数据查询工作
- 基于tinyXml2库封装的解析xml的通用类
- XML解析简介及Xerces-C++简单使用举例
- XML文档基本认识和基于JAVA对简单解析
- XML解析简介及Xerces-C++简单使用举例
- 在QQ群里有人提问有没有C语言的XML解析,偶然想到了这个问题:C++调用C库,简单试验:
- XML解析简介及Xerces-C++简单使用举例
- 简单的xslt递归解析xml成 tree
- 初学者看过来:简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系。
- 简单谈谈 C/C++ 递归的思想,实现,以及和循环的关系
- Rhyme/ 手写服务器 实现一个基于xml解析的简单的Tomcat服务器
- C++读xml文件, C#解析对应的文件
- 基于Dom4J实现XML快速解析(一)
- 简单的关于C++继承的封装