Lua - 我只想解析一个 XML 文件。

我正在使用LuaXml。我的项目中有3个文件,都在根目录下:main.lua、test.xml和xml_parser.lua。

main.lua:

require("xml_parser")
local obj,err = XmlParser:ParseXmlFile("test.xml")
if(not err) then
    //对xml进行操作
else
    print("错误: "..err);
end

test.xml:

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

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

这比这更简单了。为什么无法看到该文件?

原文链接 https://stackoverflow.com/questions/5584478

点赞
stackoverflow用户6610
stackoverflow用户6610

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

2011-04-07 16:37:25
stackoverflow用户116639
stackoverflow用户116639

也许文件名是相对于当前工作目录解释的,而不是相对于源代码目录。我不懂 Lua,但这对大多数语言来说很正常:这是标准 Unix API 的工作方式(我想 Windows 也是这样的),大多数语言都直接使用它们。唯一我知道不同的语言是 Ant,它将路径解释为相对于程序。

所以,要么在运行程序之前切换到项目目录,要么(更好的方式)用绝对路径替换相对路径。或者,如果有一种方法可以找到当前脚本的位置,你可以使用它来构造一个绝对路径。

2011-04-07 16:45:32
stackoverflow用户312586
stackoverflow用户312586

Lua 并不擅长处理文件夹。我是指 Lua 甚至没有文件夹的概念;它留给通常嵌入它的“宿主”程序来处理。

我查看了源代码,你收到的错误似乎是因为 io.open 无法定位文件。这是因为 io.open 无法推断您脚本的“工作文件夹”。

如果您给予绝对路径而不是相对路径,您的程序应该可以正确运行。

如果您确实需要使用相对文件夹,我们最好使用其中一个现有的 ,例如 LuaFileSystem

2011-04-07 17:19:22