This article details a tool aimed to import/export registry sections in XML format, to make registry diff easier in practice.
|
#pragma once
class CFile; // forward declaration
//// xmlwriter //////////////////////////////////////////////////////////////////////
//
//
//
class XmlWriter
{
// Members
//
protected:
CFile *m_pFile;
BOOL m_bFileOpen, m_bPrototypeWritten;
CString m_szFilename;
int m_nLevel;
// Constructor
public:
XmlWriter();
virtual ~XmlWriter();
// Accessors
public:
void SetIndentLevel(int n) { m_nLevel = n; }
int GetIndentLevel() { return m_nLevel; }
CString &GetFilename() { return m_szFilename; }
BOOL MustBeClosed() { return m_bFileOpen; }
// Methods
public:
void Init();
BOOL Open(CString &szFilename);
virtual BOOL WriteString(CString &szData);
BOOL Close();
};
class XmlStringWriter : public XmlWriter
{
// Members
//
protected:
CString m_szContent;
// Constructor
public:
XmlStringWriter();
virtual ~XmlStringWriter();
// Accessors
public:
void Init();
CString &GetContent();
virtual BOOL WriteString(CString &szData);
BOOL Close();
};
class XmlElement
{
// Members
//
protected:
CString m_szName;
CStringArray m_szAttribNames, m_szAttribValues;
// Constructor
public:
XmlElement();
XmlElement(const CString &szName);
// Accessors
public:
void SetName(/*in*/const CString &szName);
void GetName(/*out*/CString &szName);
void GetAttribName(int nIndex, /*out*/ CString &szAttribName);
void GetAttribValue(int nIndex, /*out*/ CString &szAttribValue);
int GetAttribCount();
BOOL FindAttrib(/*in*/CString &szAttribName);
// Methods
void AddAttrib(/*in*/CString &szName, /*in*/CString &szValue);
void Write(XmlWriter &writer, int nDeltaLevel=0, BOOL bIndent=TRUE, BOOL bEOL=TRUE); // for any kind of open tag
void WriteEmpty(XmlWriter &writer, int nDeltaLevel=0, BOOL bIndent=TRUE, BOOL bEOL=TRUE); // for any kind of open tag
void WritePInstruction(XmlWriter &writer, int nDeltaLevel=0); // used mainly for <?xml ... ?>
void WriteClosingTag(XmlWriter &writer, int nDeltaLevel=0, BOOL bIndent=TRUE, BOOL bEOL=TRUE); // for tag closure
};
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
Addicted to reverse engineering. At work, I am developing business intelligence software in a team of smart people (independent software vendor).
Need a fast Excel generation component? Try
xlsgen.