📄 xml.h
字号:
#ifndef __XML_H__
#define __XML_H__
#pragma once
typedef CMapStringToPtr CXmlMap;
#include "XmlNode.h"
#define XML_HEADER "<?xml version=\"1.0\" encoding=\"GB2312\" ?>"
//处理XML文档的象
class CXml
{
public:
//构造函数
CXml(int iNotesCount=0);
//析构函数
virtual ~CXml();
enum {TAG_UNKNOW, TAG_BEGIN, TAG_END, TAG_FULL};
public:
//打开一个XML文件
BOOL Open(LPCTSTR iFilePath);
//保存内容到XML文件
BOOL Save(LPCTSTR iFilePath=NULL);
//添加一个节点
BOOL AddNode(LPCTSTR iTagBegin, LPCTSTR iPath=NULL,
LPCTSTR iContent=NULL, LPCTSTR iTagEnd=NULL);
//查找节点,参数为包含路径和始标签的完整路径
CXmlNode* FindNode(LPCTSTR iFullPath);
private:
//解析XML文档
BOOL ParseXmlFile(char* ipText);
//解析一个标签
BOOL ParseTag(char*& ipText, CString& oTagStr, UINT& oTagType, BOOL iBegin);
//读取一对标签内的文本
BOOL ReadContent(char*& ipText, CString& oContent);
//建立新节点
CXmlNode* CreateNode(LPCTSTR iTagBegin, LPCTSTR iContent=NULL,
LPCTSTR iTagEnd=NULL, CXmlNode* pFatherNode=NULL);
//映射表初始化
void InitNodesMap(int iNotesCount);
//将节点保存到映射表
void InsertIntoMap(CXmlNode* ipNode);
private:
CXmlNode* mpRootNode; //根节点
CString mFilePath;
UINT mNodesCount; //节点数量
CXmlMap mNodesMap; //用路径加始标签作为关键字,保存节点影射
UNIT_TEST(CXml)
};
DECLARE_TEST_DUMP(CXml)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -