c++ tinyxml

c++ - TinyXML: guarda el documento en char*o cadena



(4)

No entiendas lo que dices; tu pregunta no está clara. Supongo que quiere cargar un archivo en la memoria para poder pasarlo a la función de análisis de documentos. En ese caso, el siguiente código debería funcionar.

#include <stdio.h>

El siguiente código lee un archivo en la memoria y lo almacena en un búfer

FILE* fd = fopen("filename.xml", "rb"); // Read-only mode int fsize = fseek(fd, 0, SEEK_END); // Get file size rewind(fd); char* buffer = (char*)calloc(fsize + 1, sizeof(char)); fread(buffer, fsize, 1, fd); fclose(fd);

El archivo ahora está en la variable "buffer" y se puede pasar a cualquier función que requiera para proporcionarle un búfer char * del archivo.

Estoy intentando utilizar TinyXML para leer y guardar desde la memoria, en lugar de solo leer y guardar archivos en el disco.

Parece que la función de análisis del documnent puede cargar un char *. Pero luego tengo que guardar el documento en un char * cuando haya terminado con él. ¿Alguien sabe sobre esto?

Editar: Las funciones de impresión y transmisión no son lo que estoy buscando. Muestran en un formato visible, necesito el contenido xml real.

Editar: la impresión es genial.


Aquí hay un código de muestra que estoy usando, adaptado de la documentación de TiXMLPrinter :

TiXmlDocument doc; // populate document here ... TiXmlPrinter printer; printer.SetIndent( " " ); doc.Accept( &printer ); std::string xmltext = printer.CStr();


Una solución simple y elegante en TinyXml para imprimir un TiXmlDocument en std :: string.

He hecho este pequeño ejemplo

// Create a TiXmlDocument TiXmlDocument *pDoc =new TiXmlDocument("my_doc_name"); // Add some content to the document, you might fill in something else ;-) TiXmlComment* comment = new TiXmlComment("hello world" ); pDoc->LinkEndChild( comment ); // Declare a printer TiXmlPrinter printer; // attach it to the document you want to convert in to a std::string pDoc->Accept(&printer); // Create a std::string and copy your document data in to the string std::string str = printer.CStr();