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 + -
显示快捷键?