plist解析, 简易实现.
源码
class Xml { public: typedef std::pair<std::wstring, std::wstring> NodeT; static std::vector<NodeT> parse(const std::wstring &xml) { std::vector<NodeT> result; ; std::wstring tagName; std::wstring::const_iterator curIter = std::begin(xml), begIter = std::end(xml), endIter = std::end(xml), cbegIter = std::end(xml), cendIter = std::end(xml); std::wsmatch smatch; while (std::regex_search(curIter, std::end(xml), smatch, std::wregex(LR"(</\w+>|<\w+>)"))) { ) { begIter = smatch[].first; cbegIter = smatch[].second; tagName = std::regex_replace(smatch[].str(), std::wregex(LR"(<(\w+)>)"), LR"($1)"); } curIter = smatch[].second; ].str().substr(, tagName.size()) == tagName) ++stackCount; ].str().substr(, tagName.size()) == tagName) --stackCount; // 匹配完成. ) { endIter = smatch[].second; cendIter = smatch[].first; result.push_back(std::make_pair(tagName, std::wstring(cbegIter, cendIter))); } } return result; }; };
效果图
由于项目需要输入, 输出plist文件.
C++标准又没有xml库. 索性就自己写了个简易版.
功能相当有限, 仅支持解析个个标签内容.
不过, 对我来说已经足够了.
代码也不算长, 凑合用用.
substr可以优化掉...
plist解析, 简易实现.的更多相关文章
- UIPickerView 地区解析 -- 全国省、市、区 plist 解析 -- 读取UIPickerView 当前显示内容
一个简单的plist 解析过程,借助UIPickerView 实现了手选全国的 省市区 方法, 源码中有详细注释:长句自己可以拆开看,最好的方法是,拆开,并打印,查看每一步打印的结果,结合Plist文 ...
- 03-IOSCore - XML及解析、Plist
一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...
- 玩转iOS开发 - JSON 和 Xml 数据解析
前言 Json 和xml是网络开发中经常使用的数据格式,JSON轻量级.xml相对较复杂.所以如今用JSON的比例很大.基本上从server获取的返回数据都是JSON格式的,作为iOS开发人员,解析J ...
- 【iOS】Plist-XML-JSON数据解析
网络上数据传输通用的有XML.JSON等,iOS中也能够用Plist. 要进行传输数据.就要首先进行序列化: 1.序列化. 对象转换成二进制流.(这个一句话即可) .反序列化. 二进制流转换为对象等 ...
- Java 实现《编译原理》简单词法分析功能 - 程序解析
Java 实现<编译原理>简单词法分析功能 - 程序解析 简易词法分析功能 要求及功能 (1)读取一个 txt 程序文件(最后的 # 作为结束标志,不可省去) { int a, b; a ...
- 我用 Python 撸了一个 plist 图集拆图工具!附上github源码
这些年,我一直在使用 JavaScript .CocosCreator 做开发,只要是他们不能解决的,我都不太愿意去弄,或者说是不太情愿去做.真的是手中有把锤子,看什么都是钉子,越是熟悉一样东西,越容 ...
- 大学生IT博客大赛最技术50强与最生活10强文章
姓名 学校 文章标题 文章地址 刘成伟 井冈山大学 [mystery]-linux黑客之网络嗅探底层原理 http://infohacker.blog.51cto.com/6751239/115511 ...
- iOS-技巧性总结
1.AFN与ASI对比 -- AFN1. 基于 NSURLConnection & NSURLSession 进行的封装2. 使用简单3. 提供了自动的序列化 & 反序列化支持! AF ...
- 我的runtime学习笔记
0.简介: OC方法不同于C语言函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用. 至于其他理论上的东西不必讲太多,编程讲的就 ...
随机推荐
- bzoj2730
首先不难想到要先求割顶,求割顶的方法白书上有讲解由于是一个矿崩塌,所以假如一个连通块连接了两个以上割顶,那么这个连通块内显然是不用设出口的连接块只连接了一个割顶,那么出口可以设在这个连通块内任意位置由 ...
- hiho #1044 : 状态压缩·一
描述 小Hi和小Ho在兑换到了喜欢的奖品之后,便继续起了他们的美国之行,思来想去,他们决定乘坐火车前往下一座城市——那座城市即将举行美食节! 但是不幸的是,小Hi和小Ho并没有能够买到很好的火车票—— ...
- phpMyAdmin view_create.php 跨站脚本漏洞
漏洞名称: phpMyAdmin view_create.php 跨站脚本漏洞 CNNVD编号: CNNVD-201307-066 发布时间: 2013-07-05 更新时间: 2013-07-05 ...
- POJ 3436 ACM Computer Factory
题意: 为了追求ACM比赛的公平性,所有用作ACM比赛的电脑性能是一样的,而ACM董事会专门有一条生产线来生产这样的电脑,随着比赛规模的越来越大,生产线的生产能力不能满足需要,所以说ACM董事会想 ...
- 保留n位四舍五入小数
一:可选择保留位数,注释很解释的很详细,上图 二:全部代码 using System; using System.Collections.Generic; using System.Component ...
- php如何同时连接多个数据库
下面是一个函数能够保证连接多个数据库的下不同的表的函数,可以收藏一下,比较实用,测试过是有用的. function mysql_oper($oper,$db,$table,$where='1',$li ...
- python-用户登录小程序
算是第一篇博客吧~哈哈哈 虽然说是为了完成作业,不过以后估计会常来分享.首先说一下下边这个程序的基本功能.毕竟是第一次写python程序还是有点小激动和满满的成就感的,下边这个程序: 1.输入不存在的 ...
- Atitit.hibernate体系结构大总结
Atitit.hibernate体系结构大总结 1. 4.1 hibernate基础语义 80 4.1.1 configuration 80 4.1.2 sessionfactory 81 4. ...
- Java数学表示式解析工具- jeval
这个包能够为我们提高高效的数学表达式计算. 举个样例:这个是我们策划给出的游戏命中率的一部份计算公式 是否命中=a命中率 – (b等级 – a等级) * (命中系数(6)* b闪避率 / 100)+3 ...
- STL——空间配置器(构造和析构基本工具)
以STL的运用角度而言,空间配置器是最不需要介绍的东西,它总是隐藏在一切组件(更具体地说是指容器,container)的背后,默默工作,默默付出.但若以STL的实现角度而言,第一个需要介绍的就是空间配 ...