¡Esta es una revisión vieja del documento!
Para trabajar con archivos .xml desde C\C++.
Una vez descargado y descomprimido nos encontramos con una serie de ficheros .cpp y .h. Los podemos añadir a un proyecto de Visual Studio si trabajamos en Windows o llamar al comando make si estamos trabajando en linux (ya viene con su makefile to mono) y directamente se compilará. Una vez compilemos y ejecutemos lo que estaremos viendo será el programa que viene de ejemplo en xmltest.cpp. Aún así para utilizarlo en tu código únicamente tendrás que añadir #include “tinyxml.h”.
TiXmlDocument doc( "demo.xml" ); if (!doc.LoadFile()) cout << "Carga incorrecta.\n";
TiXmlDocument es un objeto que representa un documento .xml, el método LoadFile carga dicho documento sobre el objeto y devuelve un boolean indicando si la carga se ha realizado correctamente.
La clase de la que heredan todas las demás subclases es TiXmlBase, inmediatamente, después de esta vienen TiXmlAttribute y TiXmlNode.
La estructura de un objeto .xml empieza con una declaración, luego tiene un elemento principal y dentro de este otros elementos. Un elemento puede contener otros elementos, texto y\o propiedades. Cada uno de estos conceptos tiene un objeto en TinyXML asociado:
setAttribute. Puedes recoger el texto, sin tener que acceder a su elemento anidado TiXmlText, mediante el método GetText.ToText.
Para ello existe la función LinkEndChild que tienen tanto los elementos de un documento como el documento en sí, esta función añade al final el elemento pasado por parámetro:
TiXmlDocument doc; TiXmlDeclaration * decl = new TiXmlDeclaration( "1.0", "", "" ); TiXmlElement * element = new TiXmlElement( "Hello" ); TiXmlText * text = new TiXmlText( "World" ); element->LinkEndChild( text ); doc.LinkEndChild( decl ); doc.LinkEndChild( element );
Montaría:
<?xml version="1.0" ?> <Hello>World</Hello>
Para guardar un documento, una vez lo tengamos montado únicamente deberemos de llamar al método SaveFile (string) de un objeto TiXmlDocument.
doc.SaveFile("c:\\ejemplo.xml");