XML格式转为Lua表格式
XML 格式转化为 Lua 的表,有很多方法,网上有一个luaXml的库,也饱受好评。但是其中功能太多,而我的需求又太简单,于是写了一个很简单的函数来完成需求。主要是通过 string.find 的机制来实现的。
XML 内容如下:
<?xml version="1.0" encoding="utf-8" ?>
<config><!-- pet color --><animal><pet><item name="dog_color" value="0xffffff"/><item name="dog_transparent" value="255"/><item name="cat_color" value="0xffffff"/><item name="cat_transparent" value="255"/></pet></animal>
</config>
需求是:要把其中的 name 和 value 的内容按照键值对的结构存在 lua 的表中。
代码如下:
function xml2UI(data) file = io.open("D:/config.xml", "r"); local data = file:read("*a"); -- 读取XML的全部内容保存到data中file:close(); local table = {} local head = "<item".."(.-)".."/>" -- 之后用来获取 <item /> 之间的内容local head1 = "name=\"".."(.-)".."\"" -- 之后用来获取 name=" " 之间的内容local head2 = "value=\"".."(.-)".."\"" -- 之后用来获取 value=" " 之间的内容local item = ""local m_sName = ""local m_sValue = ""local m_iNum0 = 1local m_iNum1 = 1local m_iTail = 0local m_sTtail = "</config>"_, m_iTail, _=string.find(data, m_sTtail) -- 先判断一共有多少字符while (m_iNum1 < m_iTail) do -- 上次获取的 item 位置没有达到 xml 文件最后,就会不断循环m_iNum0, m_iNum1, item = string.find(data, head, m_iNum1) -- 通过循环,不断获取 item 内容if m_iNum0 == nil or m_iNum1 == nil then return -1;else_, _, m_sName = string.find(data, head1, m_iNum0) -- 通过循环,不断获取 name 内容_, _, m_sValue = string.find(data, head2, m_iNum0) -- 通过循环,不断获取 value 内容 table[m_sName] = m_sValue -- 内容组织到 table 表中print("table["..m_sName.."]",table[m_sName])endend
end
控制台输出:table[dog_color] 0xffffff
table[dog_transparent] 255
table[cat_color] 0xffffff
table[cat_transparent] 255
上面主要是利用了 string.find 它的三个参数和三个返回值。string.find 功能是从字符串中找到特定的内容。
第一个参数是目标字符串(所有的内容,比如data),第二个参数是想要找的字符串(比如 item 之间的内容),第三个参数是从第几个字符开始找起(我让它成为一个不断变化的值)。
第一个返回值是找到的字符串( item 之间的内容)的首字符位置(一个数字),第二个返回值是找到的字符串( item 之间的内容)的尾字符位置(一个数字),第三个是找到的字符串( item 之间的内容)。
所以代码就是靠每次循环的第三个返回值来获取内容。
代码很简陋,因为功能很小。如有建议,请于评论区友好指出,谢谢。
XML格式转为Lua表格式相关推荐
- 【举例说明】 利用cmd代码将图片png格式转为图片eps格式
摘要:写论文有时候需要将图片png格式转为eps格式,用Ps转化eps格式后,Latex生成pdf论文里图片会很不清晰,网上有cmd代码教程,但由于自己是电脑小白,不知如何在cmd中打开在桌面的图片文 ...
- Excel日期格式转为常规文本格式
需求: Excel日期格式设置成常规后显示为数字格式,想要将格式转换成常规后,还显示转换之前的文本信息. 解决方案:
- 苹果heic格式怎么变成jpg格式
我们都知道heic格式是苹果iOS11以及以上系统默认的图片储存格式,而安卓和电脑中是无法直接打开的,其实是可以将特殊的heic格式转为常用的格式,然后在安卓或者电脑中打开查看的,那苹果heic格式怎 ...
- date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表
温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...
- XML和JSON 数据交换格式
为什么80%的码农都做不了架构师?>>> 一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...
- mysql 字符串转long_把数据库中的字符串格式转为long类型
背景: 在做接口时,需要把数据库中所有ID取出来,用jmter做一些数据关联,问题来了,数据库中的ID转换出来为字符型,而接口是需要使用LONG型,所以在导出来后,数据一直报类型不为long,那如何把 ...
- Python数据处理(一):处理 JSON、XML、CSV 三种格式数据
Python 数据处理系列博客来啦! 本系列将以<Python数据处理>这本书为基础,以书中每章一篇博客的形式带大家一起学习 Python 数据处理.书中有些地方讲的不太详细,我会查阅其他 ...
- python打印数字对应的星号_python打印表格式数据-星号或注释
python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...
- 搜狗词库scel格式转为txt格式(python3版本)
1.想用搜狗的词库来辅助jieba分词,需要把词库从scel转成txt格式. 在网上找到了大神的python2版本,https://blog.csdn.net/zhangzhenhu/article/ ...
最新文章
- 手机用appnium,web自动化用eclips+webdriver2
- 衡阳市2017计算机考试,2017湖南衡阳中考各科目满分及分值公告
- OpenGL 漫反射辐照度 	Diffuse irradiance
- webapp文本编辑器_Project Student:维护Webapp(可编辑)
- C# 控制台 模拟时间一秒一秒走动,直到按Esc键,时间静止,退出!
- 仿QQ打开网址显示的当前网页非官方页面
- Categories
- golang+linux+pipline
- Hibernate中一二级缓存使用详解
- 一篇报告了解国内首个针对加密流量的检测引擎
- 计算机表格怎么算加减,excel表格数据的加减-excel表格怎么自动计算加减
- 米家扫地机器人怎么加水_扫地机买什么 篇十:极速开箱! 米家扫地机1S 升级了啥?...
- 根据微信的code_url 给前端返回二维码图片--转换成base
- 数学之美:数学究竟是如何深入我们的生活
- ubuntu网站及数据库自动备份
- android GoogleMap画导航线路图 路径规划
- 国家市场监督管理总局公布《国家标准管理办法》
- ES 文件浏览器被曝安全漏洞,用户资料可能被盗
- JIL Widget应用开发必读
- 说一说室内定位中的一些黑幕