2011-04-07 56 views
2

我使用LuaXml。我的项目中有3个文件,全部位于根级别:main.lua,test.xml和xml_parser.lua。Lua - 我只是想解析一个XML文件

main.lua:

require("xml_parser") 
local obj,err = XmlParser:ParseXmlFile("test.xml") 
if(not err) then 
    //do something with the xml 
else 
    print("ERROR: "..err);  
end 

的test.xml:

<?xml version="1.0" ?> 
<level> 
    <bg>images/bg1.png</bg> 
</level> 

结果: 错误:的test.xml:没有这样的文件或目录

它无法获得比这更简单。为什么看不到该文件?

回答

1

您可能想要使用像procmon或filemon这样的工具来找出使用哪个文件系统,以及它为什么失败。

+0

看起来像那些是Windows工具,但我在Mac上。 – sol 2011-04-07 16:56:52

4

也许文件名是相对于当前工作目录解释的,而不是源代码的目录。我不知道Lua,但这对于大多数语言来说都是正常的:标准的unix API是如何工作的(我想Windows也是如此),而且大多数语言都使用这些语言。我知道的解释路径的唯一语言是Ant。

因此,在运行程序之前将目录更改为项目目录,或者(更好)用绝对路径替换相对路径。或者,如果有方法可以找出当前脚本的位置,则可以使用它来构建绝对路径。

+0

或者真的有一个极端..让卢阿创建一个文件,并扫描您的硬盘驱动器,看看它实际上变成了什么 – 2011-04-07 17:11:01

+0

@Peter M我是新来的Lua,并且快速搜索没有发现任何有用的东西。有没有简单的方法来创建一个文件? – sol 2011-04-07 17:20:08

+0

或从命令行获取文件名? – xtofl 2011-04-08 07:16:22

1

Lua不擅长处理文件夹。我的意思是,它甚至没有文件夹的概念;它将它留给通常嵌入其中的“主机”程序。

我已经看过源代码,并且您收到的错误似乎发生,因为io.open无法找到文件。发生这种情况是因为io.open无法推导出脚本的“工作文件夹”。

如果你给它的绝对路径而不是相对路径,你的程序应该能够正常工作。

如果您确实需要使用相对文件夹,我们最好的办法是使用现有的libraries之一,例如LuaFileSystem

+0

谢谢。我已经下载了LuaFileSystem,但不知道如何在这种情况下使用它。上面的原始代码如何修改以使用它? – sol 2011-04-07 17:43:23

+0

@sol/doc/us文件夹中有信息。最简单的方法是先安装luarocks,然后执行'luarocks install luafilesystem' – kikito 2011-04-07 18:38:06