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表格式相关推荐

  1. 【举例说明】 利用cmd代码将图片png格式转为图片eps格式

    摘要:写论文有时候需要将图片png格式转为eps格式,用Ps转化eps格式后,Latex生成pdf论文里图片会很不清晰,网上有cmd代码教程,但由于自己是电脑小白,不知如何在cmd中打开在桌面的图片文 ...

  2. Excel日期格式转为常规文本格式

    需求: Excel日期格式设置成常规后显示为数字格式,想要将格式转换成常规后,还显示转换之前的文本信息. 解决方案:

  3. 苹果heic格式怎么变成jpg格式

    我们都知道heic格式是苹果iOS11以及以上系统默认的图片储存格式,而安卓和电脑中是无法直接打开的,其实是可以将特殊的heic格式转为常用的格式,然后在安卓或者电脑中打开查看的,那苹果heic格式怎 ...

  4. date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...

  5. XML和JSON 数据交换格式

    为什么80%的码农都做不了架构师?>>>    一.什么是数据交换格式? 客户端与服务器常用数据交换格式xml.json.html 二.数据交换格式应用场景 移动端(安卓.IOS)通 ...

  6. mysql 字符串转long_把数据库中的字符串格式转为long类型

    背景: 在做接口时,需要把数据库中所有ID取出来,用jmter做一些数据关联,问题来了,数据库中的ID转换出来为字符型,而接口是需要使用LONG型,所以在导出来后,数据一直报类型不为long,那如何把 ...

  7. Python数据处理(一):处理 JSON、XML、CSV 三种格式数据

    Python 数据处理系列博客来啦! 本系列将以<Python数据处理>这本书为基础,以书中每章一篇博客的形式带大家一起学习 Python 数据处理.书中有些地方讲的不太详细,我会查阅其他 ...

  8. python打印数字对应的星号_python打印表格式数据-星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

  9. 搜狗词库scel格式转为txt格式(python3版本)

    1.想用搜狗的词库来辅助jieba分词,需要把词库从scel转成txt格式. 在网上找到了大神的python2版本,https://blog.csdn.net/zhangzhenhu/article/ ...

最新文章

  1. 手机用appnium,web自动化用eclips+webdriver2
  2. 衡阳市2017计算机考试,2017湖南衡阳中考各科目满分及分值公告
  3. OpenGL 漫反射辐照度 Diffuse irradiance
  4. webapp文本编辑器_Project Student:维护Webapp(可编辑)
  5. C# 控制台 模拟时间一秒一秒走动,直到按Esc键,时间静止,退出!
  6. 仿QQ打开网址显示的当前网页非官方页面
  7. Categories
  8. golang+linux+pipline
  9. Hibernate中一二级缓存使用详解
  10. 一篇报告了解国内首个针对加密流量的检测引擎
  11. 计算机表格怎么算加减,excel表格数据的加减-excel表格怎么自动计算加减
  12. 米家扫地机器人怎么加水_扫地机买什么 篇十:极速开箱! 米家扫地机1S 升级了啥?...
  13. 根据微信的code_url 给前端返回二维码图片--转换成base
  14. 数学之美:数学究竟是如何深入我们的生活
  15. ubuntu网站及数据库自动备份
  16. android GoogleMap画导航线路图 路径规划
  17. 国家市场监督管理总局公布《国家标准管理办法》
  18. ES 文件浏览器被曝安全漏洞,用户资料可能被盗
  19. JIL Widget应用开发必读
  20. 说一说室内定位中的一些黑幕

热门文章

  1. 券商提供的程序化交易接口可以做高频交易吗?
  2. 【汇正财经】乡村振兴,培育发展预制菜
  3. ZSTU OJ 3770: 黑帽子 归纳总结
  4. macbook 无法加入网络
  5. 【毕业寄语】这个时期需要你的谦虚与韧性
  6. 2022年致敬你我他的经典话语
  7. java丧尸围城攻略_丧尸围城全关卡流程攻略 丧尸围城怎么通关
  8. 迎接元宇宙时代,百度VR依托AI能力加速元宇宙新基建
  9. java控制器里面生成验证码,java + springmvc 酷炫验证码分享
  10. wps如何设置一个全屏的背景