lua-把table中的元素按照key的ascii码升序排序并组装成key-value的xml格式

跟外部的接口对接,很多接口都是http-xml的形式。

而且要求要把table中的元素按照key的ascii码升序排序后再组装成key-value的xml格式。

比如有一个table,tbl

tbl = {a=5,d=1,b=2,e=4,c=9}

需要组装成如下的xml

<xml>
<a>5</a>
<b>2</b>
<c>9</c>
<d>1</d>
<e>4</e>
</xml>

testsort.lua的代码如下

--打印table
function printTab(tab)
    for i,v in pairs(tab) do
        print(i,v)
    end
end

--把table按照key的升序排列并转换成xml
local function table2xml(to_xml)

    local sorted_tbl ={}
    
    --1,使用table本身的下标遍历取值,如to_xml[1] = "a=5"
    for i in pairs(to_xml) do
        --to_xml[i]的值插入到sorted_tbl中
        table.insert(sorted_tbl,i)
    end

    --2,排序,当table是这种格式{1="a=5",2="d=1"},可以使用sort函数进行排序
    table.sort(sorted_tbl)

    --3,接下来就是把sorted_tbl中的元素一个个组织成xml格式
    local to_bank_msg = "<xml>"

    for i, v in pairs(sorted_tbl) do
         if v ~=nil and v ~="" then
               to_bank_msg = to_bank_msg .. "<" .. v .. ">" .. to_xml[v] .. "</" .. v ..">"
         end
    end
    to_bank_msg = to_bank_msg .. "</xml>"
    return to_bank_msg
end



function main()
    local tbl = {a=5,d=1,b=2,e=4,c=9}

    printTab(tbl)
    
    print("---------------")


    local xml_msg = table2xml(tbl)
    print(xml_msg)

end
main()

执行lua文件:lua testsort.lua

结果:<xml><a>5</a><b>2</b><c>9</c><d>1</d><e>4</e></xml>


排序成功




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值