Bienvenidos sean a este post, hoy veremos como manejar archivos XML y su estructura basica.
Como dijimos en el post anterior para trabajar con datos vamos a usar archivos XML, simplemente por un tema de practicidad a la hora de creacion de archivos y recuperacion de los datos. No vamos a crear un XML Parser, para que rerinventar la polvora, sino que utilizaremos uno gratuito que debemos descargar desde la siguiente direccion:
http://sourceforge.net/projects/tinyxml/
Como dijimos este es un XML Parser simple que podemos integrar de manera sencilla a nuestro proyecto. En la direccion antes citada debemos descargar el archivo .ZIP, lo siguiente es extraer todos los archivos en la PC, una vez extraidos los archivos deberan copiar los siguientes:
- tinystr.h
- tinystr.cpp
- tinyxml.h
- tinyxml.cpp
- tinyxmlerror.cpp
- tinyxmlparser.cpp
Dentro de la carpeta donde esta nuestro proyecto, sino lo poseen les dejo un link para descargarlo:
Descarguen el archivo y extraigan el contenido en el PC. Lo unico que deben hacer es revincular a SDL y SDL_Image. Para ello, les recomiendo este post donde comento como hacerlo para SDL y este otro post donde hago lo mismo para SDL_Image. Una vez que este todo funcionando correctamente, podemos continuar. Copien los archivos anteriormente citados junto a los otros, nos quedara de la siguiente manera

Con todo esto realizado solo nos resta un par de implementaciones mas, para ello debemos ir a nuestro Explorador de soluciones en el Visual Studio y haremos click con el boton derecho sobre el proyecto. En este menu; seleccionaremos Agregar -> Elemento existente, nos aparecera una nueva ventana y en ella iremos a la carpeta donde copiamos los archivos anteriores y los seleccionaremos como se ve en la siguiente imagen

Despues que pulsen Agregar estos archivos se agregaran junto a nuestros otros archivos para poder trabajar con ellos. Con todo esto ya tenemos todo configurado si desean probarlo agreguen a uno de los archivos para incluirlo como se ve en la siguiente imagen

Con todo esto ahora si tenemos nuestro XML Parser instalado y configurado. Antes de finalizar, hablaremos un poco sobre como es la estructura de XML.
El «lenguaje» XML (eXtensible Markup Language) es o era uno de los estandares que se utilizan mayoritariamente para pasar informacion a nuestras paginas webs, hoy destronado por JSON, pero tambien es utilizado para hacer los layouts en las apps de Android. Un uso muy extendido es intercambiar informacion cuando usamos Ajax (no las paginas pero si el Parser). Esta practicidad viene dada por su estructura simple similar a las paginas webs pero a diferencia de estas solamente almacena informacion y nada mas. En cambio, HTML puede representar cierta informacion basica, pasemos a ver su estructura:
<root>
<elemento>
<sub-elementos>
...
<sub-elementos>
<sub-elementos>
...
<sub-elementos>
...
<sub-elementos>
...
<sub-elementos>
</elemento>
</root>
Como pueden ver se maneja con tags igual que en HTML, siempre va a haber un tag para abrir y otro para cerrar con el mismo nombre. Como regla solo debe haber un raiz (root) que sera el tag global. Podemos tener tantos elementos y sub-elementos como necesitemos, siempre que respetemos la regla un tag de inicio y el mismo tag de cierre. Para entender el concepto vamos a aplicarlo a los estados que vimos anteriormente:
<estados>
<MENU>
<texturas>
<textura nombre="jugar.png" id="botonJugar" />
<textura nombre="salir.png" id="botonSalir" />
</texturas>
<objetos>
<objeto type="BotonMenu" x="100" y="100" ancho="400"
alto="100" idtextura="botonJugar" />
<objeto type="BotonMenu" x="100" y="100" ancho="400"
alto="100" idtextura="botonSalir" />
</objetos>
</MENU>
<JUGAR>
<texturas>
<textura nombre="helicoptero.png" id="helicoptero" />
<textura nombre="helicoptero2.png" id="helicotero" />
</texturas>
<objetos>
<objeto type="Jugador" x="500" y="100" ancho="128"
alto="55" idtextura="helicoptero" />
<objeto type="Enemigo" x="100" y="100" ancho="128"
alto="55" idtextura="helicotero" />
</objetos>
</JUGAR>
<GAMEOVER>
</GAMEOVER>
</estados>
Tenemos tres de nuestros cuatro estados, como raiz usamos al identificador para que sean usados como estados. Tendremos un tag para cada posible estado, y dentro del estado vamos a tener primero las texturas y luego los objetos. Utilizamos estos sub-elementos para proveer la informacion que antes lo haciamos por codigo. Podemos agregar muchos mas elementos con todos los datos que antes proveiamos de forma literal, siempre y cuando respetemos las reglas antes comentadas.
Espero que con esto entiendan el concepto de como mediante XML vamos a obtener todos los datos y como mencionamos en el post anterior nos permitira reutilizar nuestra clase de estados.
En resumen, hoy hemos visto como implementar un XML Parser para nuestro proyecto, tambien como se debe agregar elementos existentes y que sean incluidos en nuestro codigo, tambien hemos visto como es la estructura de XML, en cuales otros lugares se utiliza y un ejemplo donde vemos como podra ayudarno. Espero les haya sido de utilidad y les dejo un link a GitHub donde estan los cambios realizados hoy:
Les dejo algunas de mis redes sociales para seguirme o recibir una notificacion cada vez que subo un nuevo post:


Donación
Es para mantenimento del sitio, gracias!
$1.50





