#pragma once
#include "WorkspaceNode.h"

class CWorkspaceXMLWriterException
{
public:
	CWorkspaceXMLWriterException() {};
	CWorkspaceXMLWriterException(CString error)
	{
		m_error = error;
	};

	CString	m_error;
};


class CWorkspaceXMLWriter
{
public:
	CWorkspaceXMLWriter(void);
	virtual ~CWorkspaceXMLWriter(void);

	//!	XML出力(throw CWorkspaceXMLWriterException)
	CString ToString(CWorkspaceNode *root, CString workspaceClassType);

	//!	ファイルへ出力
	void SaveToFile(CWorkspaceNode *root, CString path, CString workspaceClassType);

protected:
	/////////////////////////////////////////////////////////////////////////////
	//	出力関数
	/////////////////////////////////////////////////////////////////////////////
	//!	ヘッダーを出力
	void WriteHeader();

	//!	フッター出力
	void WriteFooter();

	//!	１ノード出力
	void WriteSubNode(CWorkspaceNode *node, CString tab = _T(""));

	/////////////////////////////////////////////////////////////////////////////
	//	メンバ変数
	/////////////////////////////////////////////////////////////////////////////
	//!	ＸＭＬ
	CString	m_xml;

	//!	ワークスペース名
	CString	m_workspaceClassType;
};
