blob: 530db3ebfed6fbe4202583a1300aeb5c73733a29 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
#ifndef XML_STRING_WRITER
#define XML_STRING_WRITER
#include "xmlnode.h"
#include "xmlwriter.h"
/**
* Implements xml writing in the XML standard format. Also allows you to
* break that format and auto-indent your exported xml data for ease of
* reading. The auto-indenting will only be applied to sections that
* have no content of their own already. This means that except for
* whitespace all of your data will be preserved perfectly.
* You can create an XmlWriter object around a file, or access the static
* write function directly and just hand it a filename and a root XmlNode.
* When using an XmlWriter object the interface is identicle to that of
* the XmlDocument class, so reference that class for API info. However
* when the initial (or root) node is closed, and the document is finished
* the file will be created and written to automatically. The user can
* check to see if this is actually true by calling the isFinished
* function in the XmlDocument class.
*@author Mike Buland
*/
class XmlStringWriter : public XmlWriter
{
public:
/**
* Construct a string writer using an internal string buffer.
*@param sIndent Optional indent to add to each line.
*/
XmlStringWriter( const char *sIndent=NULL );
/**
* Destroy the string writer and the internal string.
*/
~XmlStringWriter();
/**
* Get the string that was built. This is only valid after the document has
* been completed, so check isCompleted or be sure your addNode and
* closeNode calls match up.
*@returns A reference to the internal string object.
*/
std::string &getString();
private:
void writeString( const char *sString );
std::string sXml; /**< The string object we "write" to. */
};
#endif
|