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