Corona中文站

强大、易学的跨平台(iOS/Android)开发框架。QQ群1:74390406(满) 群2:221929599

导航

在Corona中使用XML文件

关于XML的知识在这里就不多做介绍,如果你还不了解XML,可以到这里看http://en.wikipedia.org/wiki/XML。
这篇文章主要是告诉你如何在corona中使用并操作XML文件。

XML.lua
你可以自己写一个模块或者函数来读写XML文件,但是网上有很多免费的lua脚步实现XML文件的读写,干嘛什么事情都要自己动手做呢:)

为了加快速度,我把这些脚本做了一些针对corona的修改。因此,在开始之前,请从GitHub下载xml.lua的文件。
下载地址:https://github.com/jonbeebe/Corona-XML-Module

准备工作,创建测试用的xml文件

<?xml version="1.0"?>
<inbox language="EN" color="orange">
<message>
<to>Jane Doe</to>
<from>John Dane</from>
<subject>Will you marry me?</subject>
<body>If not that's okay too.</body>
</message>
<message>
<to>Bob Willy</to>
<from>Willy Bob</from >
<subject>Heard my new record?</subject>
<body>It's rad dude.</body>
</message>
<message>
<to>Panda</to>
<from>Duck</from>
<subject>I'm ready to tell you.</subject>
<body>There is no secret ingredent.</body>
</message>
</inbox>

读XML文件代码
--初始化xml解析器
local xml = require( "xml" ).newParser()
--加载xml文件,inbox是一个table,数据结构如下图所示
local inbox = xml:loadFile( “sample.xml” )
 

local message = {}
 
-- for each "child" in the inbox table...
for i=1,#inbox.child do
-- store the address in the message table
message[i] = inbox.child[i]
end
-- for each message, print data to the terminal
for i=1,#message do
 
-- extract data from table and store in local variables
-- for easier readability/access:
local to = message[i].child[1].value
local from = message[i].child[2].value
local subject = message[i].child[3].value
local body = message[i].child[4].value
 
-- print message data to terminal
print( "\n--------------------------------------------------" )
print( "To: ", to )
print( "From: ", from )
print( "Subject:", subject )
print( "Body: ", body )
end

上面的代码会输出如下结果:

-------------------------------------------------- To:         Jane Doe From:       John Dane Subject:    Will you marry me? Body:       If not that's okay too. -------------------------------------------------- To:         Bob Willy From:       Willy Bob Subject:    Heard my new record? Body:       It's rad dude. -------------------------------------------------- To:         Panda From:       Duck Subject:    I'm ready to tell you. Body:       There is no secret ingredient.

读取属性

<inbox language=”EN” color=”orange”></inbox>

可以这样读取language和color:

print( inbox.properties[“language”] )  -- EN print( inbox.property[“color”] ) -- orange

编后语:其实corona提供的json库可以完成和达到类似的功能,只是xml更通用和灵活,后面我们再介绍json。

<< ASP.NET使用Global.asax轻松实现URL重写Flash如何导出文件供Corona使用 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 Copyright 2011-2015 BuildApp.Net. All Rights Reserved.