aboutsummaryrefslogtreecommitdiff
path: root/src/xmlfilewriter.h
blob: e328f9637b493989839d4b1984d82c83491bb8e5 (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
#ifndef XML_FILE_WRITER
#define XML_FILE_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 XmlFileWriter : public XmlWriter
{
public:
	/**
	 * Construct a file writer around a given file.
	 *@param sFileName The file to create or overwrite and write XML into.
	 *@param sIndent The indent text to use, if any.
	 */
	XmlFileWriter( const char *sFileName, const char *sIndent=NULL, XmlNode *pRoot=NULL );
	XmlFileWriter( FILE *fh, const char *sIndent=NULL, XmlNode *pRoot=NULL );

	/**
	 * Destroy the writer.
	 */
	virtual ~XmlFileWriter();

private:
	void writeString( const char *sString );
	std::string sFileName;	/**< The filename to write to. */
	FILE *fh;	/**< The file handle to the open file. */
};

#endif