1.- Creamos un archivo de texto y le cambiamos la extension y le ponemos .xml, ahora rellenaremos con los siguientes datos.
2.- Aqui el ejemplo de como mostrar los datos del XML
#include <irrlicht.h>
#include <iostream>
using namespace std;
//los namespace para definir funciones de irrlicht
using namespace irr;
using namespace core;
using namespace scene;
using namespace video;
using namespace io;
using namespace gui;
#ifdef _IRR_WINDOWS_
#pragma comment(lib, "Irrlicht.lib")
#endif
int main()
{
//define un device para la pantalla
IrrlichtDevice *device = createDevice(EDT_NULL, dimension2d<u32>(0, 0), 16, false);
//en caso de error
if (!device)
return 1;
//Para ponerle un titulo a la ventana
device->setWindowCaption(L"Mostrando datos de un archivo XML en Irrlicht");
//Creamos el archivo
IFileSystem *fileSystem = device->getFileSystem();
//Creo un lector de xml para poder leer el archivo XML
IXMLReader *xml = fileSystem->createXMLReader("jugador.xml");
//Declaro mis cadenas para mostrar los datos cargados del xml
stringc nombreJugador = "Nombre: ";
stringc nivel = "Nivel: ";
stringc salud = "Salud: ";
stringc exp = "EXP: ";
stringc mensaje = "Mensaje: ";
//Leera el xml
while (xml && xml->read())
{
//Para obtener un tipo de nodo del xml
switch (xml->getNodeType())
{
case EXN_ELEMENT:
{
//declaro un nombre de nodo para poder recoger los datos de mis nodos en mi xml
stringc nombreNodo = xml->getNodeName();
//si el nodo es igual al nodo de mi xml carga el valor del atributo de mi xml
if (nombreNodo.equals_ignore_case("jugador"))
{
nombreJugador.append(xml->getAttributeValue(L"nombre"));
cout << nombreJugador.c_str() << endl;
}
//si el nodo es igual al nodo de mi xml carga el valor del atributo de mi xml
else if (nombreNodo.equals_ignore_case("nivel"))
{
xml->read();
nivel.append(xml->getNodeData());
cout << nivel.c_str() << endl;
}
//si el nodo es igual al nodo de mi xml carga el valor del atributo de mi xml
else if (nombreNodo.equals_ignore_case("salud"))
{
xml->read();
salud.append(xml->getNodeData());
cout << salud.c_str() << endl;
}
//si el nodo es igual al nodo de mi xml carga el valor del atributo de mi xml
else if (nombreNodo.equals_ignore_case("exp"))
{
xml->read();
exp.append(xml->getNodeData());
cout << exp.c_str() << endl;
}
//si el nodo es igual al nodo de mi xml carga el valor del atributo de mi xml
else if (nombreNodo.equals_ignore_case("mensaje"))
{
xml->read();
mensaje.append(xml->getNodeData());
cout << mensaje.c_str() << endl;
}
}
break;
default:
break;
}
}
cout << endl;
//elimino de la memoria mi xml creado
delete xml;
//cerrar device
device->drop();
system("pause");
return 0;
}


No hay comentarios:
Publicar un comentario