使用LuaXML将Lua表解析为Xml
2013-10-3 10:39:47
收藏:0
阅读:188
评论:2
我正在使用luaxml将Lua表转换为xml。我在使用luaxml时遇到了问题,例如,我有一个lua表格,如下所示:
t = {name="John", age=23, contact={email="john@gmail.com", mobile=12345678}}
当我尝试使用LuaXML时,
local x = xml.new("person")
x:append("name")[1] = John
x:append("age")[1] = 23
x1 = xml.new("contact")
x1:append("email")[1] = "john@gmail.com"
x1:append("mobile")[1] = 12345678
x:append("contact")[1] = x1
生成的xml变成了:
<person>
<name>John</name>
<age>23</age>
<contact>
<contact>
<email>john@gmail.com</email>
<mobile>12345678</mobile>
</contact>
</contact>
</person>`
Xml中有2个联系人。我该怎么做才能使Xml正确?
此外,我如何将XML转换回Lua表?
原文链接 https://stackoverflow.com/questions/10484331
点赞
stackoverflow用户4074771
```lua
local x = xml.new("person")
x:append("name")[1] = "John"
x:append("age")[1] = 23
x1 = x:append("contact")
x1:append("email")[1] = "john@gmail.com"
x1:append("mobile")[1] = 12345678
print(x)
本地定义一个变量 x
并使用 xml.new
函数创建一个名为 "person" 的新 XML 对象。接着,使用 x:append
函数往 XML 对象中添加 "name" 和 "age" 元素,并对它们的值进行赋值。然后,使用变量 x1
指向添加的 "contact" 元素,并在其下添加 "email" 和 "mobile" 子元素,同样对它们的值进行赋值。最后,使用 print
函数输出整个 XML 对象 x
。
2014-09-30 01:34:35
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你的语法有点小问题,你为联系人创建了一个新表,然后使用以下代码同时附加了一个“联系人”节点并另外分配了一个:
x1 = xml.new("contact") x1:append("email")[1] = "john@gmail.com" x1:append("mobile")[1] = 12345678 x:append("contact")[1] = x1
实际上应该是:
local contact = xml.new("contact") contact.email = xml.new("email") table.insert(contact.email, "john@gmail.com") contact.mobile = xml.new("mobile") table.insert(contact.mobile, 12345678)
请记住,每个“节点”都是其自己的表值,这就是xml.new()返回的内容。
当你调用
xml.save(x, "\some\filepath")
时以下代码可以正确创建XML。请记住,每当你调用xml.new()时,你都会得到一个表格返回值,我想在那里做出决策可以很容易地设置属性……但使添加简单值的语法有点啰嗦。-- 生成根节点 local root = xml.new("person") -- 创建一个新的名字节点来附加到根部 local name = xml.new("name") -- 将值放入名字标记 table.insert(name, "John") -- 创建一个新的年龄节点来附加到根部 local age = xml.new("age") -- 将值放入年龄标记 table.insert(age, 23) -- 这实际上将“名称”和“年龄”标签添加到根元素中 root:append(name) root:append(age) -- 创建一个新的联系人节点 local contact = xml.new("contact") -- 为联系人创建名为电子邮件的子标记 contact.email = xml.new("email") -- 将其值插入电子邮件表中 table.insert(contact.email, "john@gmail.com") -- 为联系人创建名为手机的子标记 contact.mobile = xml.new("mobile") table.insert(contact.mobile, 12345678) -- 添加联系人节点,因为它包含了其子标记的所有信息,所以我们不必担心显式添加子标记。 root.append(contact)
遵循该示例,您应该可以轻松地看出如何任意深度地探索XML。 您甚至可以编写函数来轻松实现创建子标记,以使代码更简洁...