Луа - я просто хочу разобрать файл XML - PullRequest
2 голосов
/ 07 апреля 2011

Я использую 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
    //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: такого файла или каталога нет

Это не могло быть намного проще, чем это. Почему он не видит файл?

Ответы [ 3 ]

4 голосов
/ 07 апреля 2011

Возможно, имя файла интерпретируется относительно текущего рабочего каталога, а не каталога исходного кода. Я не знаю Lua, но это было бы нормально для большинства языков: это то, как работают стандартные API Unix (я думаю, что Windows делает то же самое), и большинство языков просто используют их. Единственный язык, который я знаю, который интерпретирует пути относительно программы, это Ant.

Таким образом, либо измените каталог на каталог проекта перед запуском программы, либо (лучше) замените относительный путь на абсолютный. Или, если есть способ узнать местоположение текущего скрипта, вы можете использовать его для создания абсолютного пути.

1 голос
/ 07 апреля 2011

Луа не очень хорош в работе с папками.И под этим я подразумеваю, что у этого даже нет понятия папок;он оставляет это программе «хоста», в которую он обычно встроен.

Я посмотрел на источник, и ошибка, которую вы получаете, кажется, происходит, потому что io.open не в состоянии найти файлы.Это происходит потому, что io.open не может вывести «рабочую папку» вашего скрипта.

Ваша программа должна работать правильно, если вы дадите ей абсолютный путь вместо относительного.

Если вам действительно нужно использовать относительные папки, лучше всего использовать одну из существующих библиотек , например LuaFileSystem .

1 голос
/ 07 апреля 2011

Вы можете использовать такой инструмент, как procmon или filemon, чтобы узнать, какая файловая система io используется и почему она не работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...