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

来源:互联网 发布:会员生日提醒软件 编辑:程序博客网 时间:2024/05/20 19:20

跟外部的接口对接,很多接口都是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的代码如下

--打印tablefunction printTab(tab)    for i,v in pairs(tab) do        print(i,v)    endend--把table按照key的升序排列并转换成xmllocal 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_msgendfunction main()    local tbl = {a=5,d=1,b=2,e=4,c=9}    printTab(tbl)        print("---------------")    local xml_msg = table2xml(tbl)    print(xml_msg)endmain()

执行lua文件:lua testsort.lua

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


排序成功




0 0
原创粉丝点击