ファイルを読み取ってディスクに保存するだけでなく、TinyXML を使用してメモリから読み取って保存しようとしています。
ドキュメントの解析関数は char * をロードできるようです。しかし、作業が終わったら、ドキュメントを char * に保存する必要があります。誰もこれについて知っていますか?
編集:印刷とストリーミング機能は、私が探しているものではありません。それらは表示可能な形式で出力されます。実際の xml コンテンツが必要です。
編集:印刷はクールです。
TiXMLPrinterのドキュメントを基に、私が使用しているサンプル コードを次に示します。
TiXmlDocument doc;
// populate document here ...
TiXmlPrinter printer;
printer.SetIndent( " " );
doc.Accept( &printer );
std::string xmltext = printer.CStr();
TiXmlDocument を std::string に出力するための TinyXml のシンプルでエレガントなソリューション。
私はこの小さな例を作りました
// 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();
私は TinyXML に詳しくありませんが、ドキュメントから、オペレータ << を C++ ストリーム ( C++ 文字列ストリームを使用できるように) に使用するか、TiXMLPrinter クラスを使用すると、ファイルを使用せずに STL 文字列を取得できるようです。TinyXML のドキュメントを参照してください(「印刷」セクションを探してください)。
あなたの言っていることはよくわかりません。あなたの質問は明確ではありません。ドキュメント解析関数に渡すことができるように、ファイルをメモリにロードしたいと思っていると思います。その場合、次のコードが機能するはずです。
#include <stdio.h>
次のコードは、ファイルをメモリに読み込み、バッファに格納します
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);
ファイルは変数「buffer」にあり、ファイルの char* バッファーを提供する必要がある関数に渡すことができます。