Ir para conteúdo

Posts Recomendados

Fala XTibianos!

Vim disponibilizar e ensinar como usar a livraria xml em lua desenvolvida por mim. 


A livraria: 

  Mostrar conteúdo oculto

 

Vou ensinar como usar ela. 

Vou usar como exemplo uma parte do arquivo vocations.xml: 

   

  Mostrar conteúdo oculto

 

Primeiro, carregar o arquivo. 
Ele vai retornar um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". 

  Citar

local voc = xml:load('vocations.xml') 

Expand  

 

Buscar a tag desejada. 
Ele vai retornar uma tabela contendo todos os parametros que foram lidos no arquivo. 
O primeiro argumento da função, é o nome da tag requerida. exemplo: <tagNome ....>, tagNome seria o primeiro argumento da função. 
O segundo elemento é usado para diferenciar um bloco de outro como no caso do arquivo vocations que contem varias vocations, mas apenas uma é a requerida. 
O terceiro elemento é o que diferencia um bloco de outro similar. seguindo o exemplo do arquivo vocations, existe varias vocações, mas apenas uma delas tem o id de numero 2. 

  Citar

local find = voc:find('vocation','id',2) 

Expand  

 

Imprime o que foi lido no arquivo. 

  Citar

print(find) 

Expand  


a saida seria essa, nesse caso. 

  Citar

<vocation description="a Druid" gaincap="10" needpremium="0" gainhpticks="1" gainmanaamount="6.7" gainmanaticks="1" soulmax="100" id="2" attackspeed="2000" gainsoulticks="600" name="Druid" fromvoc="2" manamultiplier="1.1" gainhpamount="0.8" gainmana="30" gainhp="5"> 
<magHealingDamage = "1.1" defense = "1.0" magDefense = "1.1" wandDamage = "1.0" armor = "1.0" meleeDamage = "1.0" magDamage = "1.1" distDamage = "1.0" /> 
<fist = "1.5" axe = "1.8" fishing = "1.1" sword = "1.8" club = "1.8" experience = "1.0" shielding = "1.5" distance = "1.8" /> 
</vocation> 

Expand  

 

Mas, ela tambem é uma tabela, por isso, voce pode pegar os elementos dentro dela dessa forma. 

  Citar

find.description > "a Druid" 
find.id > 2 
find.needpremium > 0 
... 

Expand  

 

As tags existentes dentro do bloco "vocation", tambem é uma tabela com indice numerico; portanto é valido pegar os dados dela dessa forma. 

  Citar

find[1].defense > 1 
find[1].magDamage > 1.1 
find[2].fist > 1.5 
find[2].axe > 1.8 
... 

Expand  

 

Cada tag que exista dentro do bloco, vem como uma tabela com indicie numerico. 

 

Criando objetos para xml:
O argumento inserido , seria o nome do bloco. Ex -> <novo> </novo> 

  Citar

local novo = xml:new('novo') 

Expand  

 

Adiciona tag's dentro do corpo do bloco. 

  Citar

novo:tag('print',{dir=1,move="sul"}) 
novo:tag('nova',{dir=2,move="norte",sem="valido"}) 

Expand  

Pode ser adicionado quantas tags quiser. 

 

Cria uma tagbloco ou bloco dentro do bloco principal. Ex -> <tagBloco inserido="primer" ordem="2" face="not"> </tagBloco> 
Essa função retorna um objeto para ser usado pelos metametodos ou uma string para outros fins como "print". 

  Citar

local tagBloco = find:append('tagBloco',{inserido='primer',ordem=2,face='not'}) 

Expand  

 

Dessa forma que foi declarada sem uma tabela contendo os parametros da tag, ela é criada como um bloco. Ex -> <newBloco> </newBloco> 

  Citar

local newBloco = find:append('newBloco') 

Expand  

 

Adiciona tag's ao corpo do novo bloco/tagbloco criado pela função append. 

  Citar

tagBloco:tag('inside',{system='F_ord',mac="TTvalido"}) 
tagBloco:tag('newInside',{system='F_ord',mac="TTvalido",base="TT_down"}) 
newBloco:tag('newInsideBloco',{system='F_ord',mac="TTvalido",base="TT_down"}) 

Expand  

 

E por fim, salva os dados em um arquivo. 
Nessa função, existe o argumento unico que é o destino do arquivo e seu nome, que nesse caso foi ocultado. 

  Citar

find:save() -- Não declarei diretorio e nem o nome do arquivo, logo ele será criado onde estiver o script. 

Expand  

 

É isso ae pessoal, espero que gostem.
 

@Daniel, deleta esse topico. Por algum motivo, duplicou o topico.

Link para o comentário
https://xtibia.com/forum/topic/241533-nova-livraria-lua-para-xml/
Compartilhar em outros sites

×
×
  • Criar Novo...