xml.h
来自「这是一个能够自动生成文档的程序」· C头文件 代码 · 共 65 行
H
65 行
#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 + =
减小字号Ctrl + -
显示快捷键?