XML转Lua表

关于XML转Lua表,我的想法是,首先摸清XML需要用到的数据的相关格式规律,然后用lua解析出来,保存为Lua表,再把表专为lua文件。

了解XML

首先是我理解的XML格式

<?xml version="1.0"?> <!-- 表头 -->
<Workbook <!-- 表信息 -->
<!-- 省略一些细节 -->
...
 <Worksheet ss:Name="工作表1"> <!-- 这是我们要关注的每个小表标志 如果有多个小表就有多个这样的标志,以小表为单位 -->
   <Table ss:ExpandedColumnCount="6" ss:ExpandedRowCount="20" x:FullColumns="1"
   x:FullRows="1" ss:DefaultColumnWidth="65" ss:DefaultRowHeight="15"><!-- 不关注 -->
   <Row><!-- 每行信息列出来 -->
    <Cell ss:StyleID="s17"><Data ss:Type="String">字段英文名</Data></Cell><!-- 每列信息列出来 -->
    <Cell ss:StyleID="s17"><Data ss:Type="String">level</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">costXP</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">waterMAX</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">waterrestorespeed</Data></Cell>
    <Cell ss:StyleID="s17"><Data ss:Type="String">levelname</Data></Cell>
    </Row>
</Worksheet>
</Workbook>

解析

基本上就是按上面找到规则,用正则匹配与修改。
出现过一些小问题
1. 要跟策划先统一好规则,因为我想工具化,不想每次都手动改表。我订的规则是前五行策划需要的话放说明,不需要的话也统一空出来,万一以后突然策划想补充些什么呢?增加一行default数值配置。然后还是正式数据。
2. cell的写法有两种

  <Cell ss:StyleID="s16"/>
  <Cell ss:StyleID="s17"><Data ss:Type="Number">2</Data></Cell>

所以不能简单用”< Cell.-< /Cell>”来匹配
类似的变成搜索”< Cell”来确定范围

lua表转lua文件

基本也不难,之前做过,所以直接拿来用。
遇到问题:
想统一用py来调,所以又加了一个py来统一入口,py掉lua用的是lupa,安装方法

sudo pip install lupa

最后,把完整的代码贴一下

local print = print
local table = table
local string = string
local type = type
local pairs = pairs

local printAll = function(target, params)
    local targetType = type(target)
    if targetType == "table" then
        local tip = params and params.tip or "This is a Table!^_<......................................"
        local cache = {[target] = "."}
        local isHead = false

        local function dump(t, space, level)
            local temp = {}
            if not isHead then
                temp = {tip}
                isHead = true
            end
            for k, v in pairs(t) do
                local key = tostring(k)
                
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值