?? xmlfile.h
字號:
// XMLFile.h v1.0
// Purpose: interface for the CXMLFile class.
// by hujinshan @2004-11-9 10:15:58
#ifndef _XMLFILE_H_
#define _XMLFILE_H_
#pragma warning(disable: 4786)
//#import "C:/WINDOWS/SYSTEM32/msxml4.dll" named_guids raw_interfaces_only
//#import <msxml4.dll>
#import <msxml4.dll>
#include <atlbase.h>
#include <string>
#include <map>
#include <vector>
//typedef const char* LPCTSTR;
//! XMLFile class 讀寫XML文件
/*!
可用來保存應(yīng)用程序設(shè)置。
*/
class CXMLFile
{
/// Construction
public:
CXMLFile();
CXMLFile(const char* filename);
virtual ~CXMLFile();
/// Implementation
public:
///得到節(jié)點值(長整型)
///保存XML文件
/**
\param cstrBaseKeyName 基鍵名.
\param cstrValueName 鍵名(取值名).
\param lDefaultValue 默認長整值.
*/
long GetLong(const char* cstrBaseKeyName, const char* cstrValueName, long lDefaultValue);
///設(shè)置節(jié)點值(長整型)
/**
\param cstrBaseKeyName 基鍵名.
\param cstrValueName 鍵名(取保存值名).
\param lDefaultValue 默認長整值.
*/
long SetLong(const char* cstrBaseKeyName, const char* cstrValueName, long lValue);
///得到節(jié)點值(字符串)
/**
\param cstrBaseKeyName 基鍵名.
\param cstrValueName 鍵名(取值名).
\param cstrDefaultValue 默認字符串值.
*/
std::string GetString(const char* cstrBaseKeyName, const char* cstrValueName, const char* cstrDefaultValue);
///設(shè)置節(jié)點值(字符串)
/**
\param cstrBaseKeyName 基鍵名.
\param cstrValueName 鍵名(保存值名).
\param cstrDefaultValue 默認字符串值.
*/
long SetString(const char* cstrBaseKeyName, const char* cstrValueName, const char* cstrValue);
///得到節(jié)點屬性
/**
\param cstrBaseKeyName 基鍵名.
\param cstrValueName 鍵名(保存屬性鍵名).
\param cstrAttributeName 屬性名(保存屬性值名).
\param cstrDefaultAttributeValue 默認屬性值.
*/
std::string GetAttribute(const char* cstrBaseKeyName, const char* cstrValueName,
const char* cstrAttributeName, const char* cstrDefaultAttributeValue);
///設(shè)置節(jié)點屬性
long SetAttribute(const char* cstrBaseKeyName, const char* cstrValueName,
const char* cstrAttributeName, const char* cstrAttributeValue);
///得到節(jié)點值
long GetNodeValue(const char* cstrBaseKeyName, const char* cstrValueName,
const char* cstrDefaultValue, std::string& strValue, const char* cstrAttributeName,
const char* cstrDefaultAttributeValue,std::string& strAttributeValue);
///設(shè)置節(jié)點值
long SetNodeValue(const char* cstrBaseKeyName, const char* cstrValueName,
const char* cstrValue=NULL, const char* cstrAttributeName=NULL,
const char* cstrAttributeValue=NULL);
///刪除某節(jié)點和其所有子節(jié)點
/*!
所有子節(jié)點的鍵值保存到參數(shù)keys_val里.
*/
long DeleteSetting(const char* cstrBaseKeyName, const char* cstrValueName);
///得到某節(jié)點的子節(jié)點的鍵名
/*!
所有子節(jié)點的鍵名保存到參數(shù)keys_val里.
*/
long GetKeysValue(const char* cstrBaseKeyName,
std::map<std::string, std::string>& keys_val);
///得到某節(jié)點的子節(jié)點的鍵名
long GetKeys(const char* cstrBaseKeyName,
std::vector<std::string>& keys);
///保存XML文件
/**
\param filename 保存文件名.
*/
bool save(const char* filename=NULL);
///裝載XML文件
/**
\param filename 裝入文件名.
*/
bool load(const char* filename, const char* root_name="xmlRoot");
///不保存改變
void DiscardChanges();
///清空內(nèi)容
void clear();
//------------------------------------------------------------------------------------
long GetRootElem(MSXML2::IXMLDOMElementPtr rootElem);
long GetNode(const char* cstrKeyName, MSXML2::IXMLDOMNodePtr& foundNode);
protected:
MSXML2::IXMLDOMDocument2Ptr XmlDocPtr;
std::string xml_file_name, m_root_name;
std::string* ParseKeys(const char* cstrFullKeyPath, int &iNumKeys);
MSXML2::IXMLDOMNodePtr FindNode(MSXML2::IXMLDOMNodePtr parentNode, std::string* pCStrKeys, int iNumKeys, bool bAddNodes = FALSE);
};
#endif // _XMLFILE_H_
// end of file
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -