XML
Um arquivo XML é carregado inteiro para a memória e vira uma árvore de nós. Todas as funções desta página trabalham em cima de um handle de nó — o que xmlLoadFile devolve é o handle do nó raiz do documento, e a partir dele você chega em todos os outros.
O ciclo é sempre este: carregar → ler ou alterar → gravar → descarregar. Nada é escrito no disco enquanto você não chamar xmlSaveFile; e enquanto você não chamar xmlUnloadFile, o documento continua ocupando memória.
Um ciclo completo
local caminho = "config/lojas.xml"
-- 1. carrega o arquivo; se ele ainda não existir, começa um documento novolocal raiz = xmlLoadFile(caminho) or xmlCreateFile(caminho, "lojas")if not raiz then return end
-- 2. lê o que já está láfor _, loja in ipairs(xmlNodeGetChildren(raiz)) do outputDebugString(xmlNodeGetAttribute(loja, "nome") .. " em " .. xmlNodeGetValue(loja))end
-- 3. acrescenta uma entradalocal nova = xmlCreateChild(raiz, "loja")xmlNodeSetAttribute(nova, "nome", "Ammu-Nation")xmlNodeSetValue(nova, "1366.0, -1279.0, 13.5")
-- 4. grava no disco e libera a memóriaxmlSaveFile(raiz)xmlUnloadFile(raiz)Quem recebe caminho e quem recebe nó
Só três funções conhecem arquivos: xmlLoadFile e xmlCreateFile recebem um caminho, e xmlCopyFile recebe um nó e um caminho novo. Todas as outras trabalham exclusivamente com handles de nó.
Estas 18 funções existem no servidor e no cliente. Você pode usá-las em scripts declarados em server_files, client_files ou shared_files.