在Lua中安全地生成XML
2017-5-23 12:18:7
收藏:0
阅读:388
评论:3
我正在编写一个 Lua 应用程序,用于生成 Atom feed。目前,我正在“手动”生成 XML——将字符串写入文件。
虽然这似乎是最好的方法,但它可能不是。我开始担心是否能够完全正确地转义。有没有人在 Lua 中做过类似的事情?
我应该坚持手动生成吗?还是为现有的 C 库编写包装器?
(相比之下,Perl 似乎有许多选项。)
原文链接 https://stackoverflow.com/questions/1264038
点赞
stackoverflow用户15795
我也曾手动生成过 XML。我创建了一个看起来像这样的 API:
function XmlElement(tag, text, attr)
...
end
function XmlSubelement(root, tag, text, attr)
...
end
然后使用它:
local root = XmlElement("Level0")
XmlSubelement(root, "Level1", "一些文本")
XmlSubelement(root, "Level1", "更多的文本")
local s = root:tostring()
虽然我不再有这段代码了,但它可以在一个屏幕上包含引号。
2009-08-13 02:23:42
stackoverflow用户39182
我现在对我的问题有了一个答案:我为 Tim Bray的C XML生成器,Genx撰写了Lua绑定。
这是它的首页,这是Bitbucket上的项目。它现在是一个不完整的绑定,但对于简单的任务可以工作:
require 'genx'
d = genx.new(io.stdout)
d:startElement('farm')
d:startElement('crop')
d:attribute('type', 'fruit')
d:text('Apricots')
d:endElement()
d:startElement('crop')
d:attribute('type', 'vegetable')
d:text('Zucchini')
d:endElement()
d:endElement()
产生:
<farm><crop type="fruit">Apricots</crop><crop type="vegetable">Zucchini</crop></farm>
就个人而言,我觉得这种“流式”接口比基于树的接口更容易使用。
2009-08-16 01:50:08
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 模式将字符串(嵌套数组)转换为真正的数组?
Lua有各种数据持久性库,很多在Lua用户Wiki上有描述。有关XML的页面有可供使用的信息。
Kepler项目友好的人们有用于生成有效XML的HTML生成器(已经失效)。
还有cosmo,这是一个可以用于生成XML的广义模板框架(以及其他内容)。
编辑:
我理解模板不一定提供输出保持格式正确的保证的担忧。我相信Cosmo的作者如果格式正确的模板可能生成格式不正确的文档,他们会感到不满意,但是仍然存在适当引用内容的问题。在我使用它的情境中,这对我来说不是个问题,但是我也没有从不可信的来源文本开始工作。
在LuaForge上还发布了一些可能有用的项目:
Lua Element Tree将XML文档映射到表树中。在读取时使用Expat,写入时声称生成有效的XML。
LuaSOAP包括足以用于SOAP事务的XML生成和解析。如果您决定编写自己的生成器,这可能是RSS或ATOM等有限方言的起点。
此外,我知道我看过实现了HTML文档的完整DOM并支持解析和文档生成的项目,但我记不起它的名称或无法在LuaForge今天定位它。
编辑2:这是另一个套件,我以前没有注意到,即使它包括在Lua for Windows中:LuaXML。它映射XML和Lua表嵌套之间的关系,并且可以读取和写入XML。