Skip to content

caiobps1/Manipulando-XML-com-Python

Repository files navigation

Manipulando XML com Python

Excluir tags com estrutura irregular (limpar.py)

Para automatizar a tarefa de excluir as tags com problema utilizei a biblioteca xml.etree.ElementTree do Python para processar o meu arquivo XML

O arquivo XML possui uma tag chamada e é repetida ao longo de mais de 20mil linhas. Algumas tags no arquivo estão com problema e estão vazias, por isso precisam ser removidas.

Note que na linha 8 a tag está vazia. Ela precisa ser removida.

<?xml version="1.0"?>
<spawns>
	<spawn centerx="360" centery="218" centerz="0" radius="5">
		<monster name="Lizard Chosen" x="0" y="-2" z="0" spawntime="120" />
		<monster name="Juggernaut" x="3" y="0" z="0" spawntime="120" />
		<monster name="Lizard Zaogun" x="-2" y="1" z="0" spawntime="120" />
	</spawn>
	<spawn centerx="367" centery="218" centerz="0" radius="5" />
	<spawn centerx="328" centery="248" centerz="0" radius="5">
		<monster name="Lizard Chosen" x="-1" y="-3" z="0" spawntime="120" />
		<monster name="Lizard High Guard" x="3" y="-1" z="0" spawntime="120" />
		<monster name="Lizard High Guard" x="-2" y="1" z="0" spawntime="120" />
	</spawn>
	<spawn centerx="357" centery="248" centerz="0" radius="5">
		<monster name="Lizard Chosen" x="1" y="-3" z="0" spawntime="120" />
		<monster name="Lizard Legionnaire" x="-1" y="-1" z="0" spawntime="120" />
		<monster name="Lizard Zaogun" x="3" y="-1" z="0" spawntime="120" />
	</spawn>

O método findall('monster') é utilizado para buscar todas as tags dentro de cada . Se a lista estiver vazia (if not monsters:), a tag é removida do XML.

Após fazer as alterações, o arquivo corrigido é salvo como arquivo_corrigido.xml.

Excluir tag e ajustar comentários (corrigir_xml.py)

A estrutura do meu arquivo possui a seguinte linha:

<item id="2463" countmax="1" chance1="800" chancemax="10000" /> -- plate armor

Preciso verificar cada linha do arquivo e modificar a tag chance1 para chance e remover a tag chancemax.

Além disso preciso alterar o comentário -- plate armor para <!-- plate armor -->

Ajustei o script para ser chamado por linha de comando utilizando a biblioteca argparse para processar os argumentos.

Comando para executar arquivo python corrigir_xml.py arquivo.xml

Eu utilizei python3 em uma máquina linux

Excluir tag e ajustar comentários em todos os XML (corrigir_todos_xml.py)

Mesmo código acima, adicionada a biblioteca os para listar os arquivos nas pastas e subpastas, e a biblioteca glob para filtrar apenas os XML.

Usei a condição if os.path.basename(arquivo) == "monsters.xml": para verificar se o arquivo é monsters.xml, e o comando continue para continuar o loop, porque este arquivo não é interessante para modificar.

Comando para executar arquivo python corrigir_todos_xml.py caminho/para/sua/pasta

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages