⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 domdocument.h

📁 有关于C++网络传输操作的一个DLL开发,希望对学习C++的人有帮助
💻 H
字号:

#if !defined(_DOMDOCUMENT_H_)
#define _DOMDOCUMENT_H_

#include "DOMElement.h"

#define TRIM_LEFT(str)\
{\
	while (0 < str.size() &&\
		   (str[0] == '\r' ||\
			str[0] == '\n' ||\
			str[0] == '\t' ||\
			str[0] == ' '))\
	{\
		str.erase(0, 1);\
	}\
}


#define TRIM_RIGHT(str)\
{\
	while (0 < str.size() &&\
		   (str[str.size() - 1] == '\r' ||\
		    str[str.size() - 1] == '\n' ||\
		    str[str.size() - 1] == '\t' ||\
		    str[str.size() - 1] == ' '))\
	{\
		str.erase(str.size() - 1, 1);\
	}\
}


class DOMDocument  
{
public:
	DOMElement* getDocumentElement();
	DOMDocument();
	virtual ~DOMDocument();

	// 从一块连续的内存中装入XML,并解析(Parse)成XML Tree
	int LoadXML(const char *buffer, unsigned long bufferSize);

	// 从指定的文件中装入XML,并解析(Parse)成XML Tree
	int LoadXML(MLPCSTR pathXML);

	// 将当前的XML Tree转换成XML文档
	int BuildXML(DOMElement* pElement);

	// 获得XML的version信息
	string get_version() const {return m_version;}

	// 获得XML文档 (std::string类型)
	string get_xml() const {return m_xml;}

	// 获得XML Tree的根节点(root node)
	DOMElement* get_root(){return &m_root;}

	// 指定一个节点为根节点,必须要先释放之前的XML Tree,否则会造成内存泄露
	//void set_root(DOMElement* root){ m_root = *root;}
	
	// 遍历所有节点,并对每一个节点调用pFunc(其实可以加入一个参数,让遍历行为可以从任意一个节点开始)
	int EnumerateElements(LPENUM_CALLBACK_FUNC pFunc,DOMElement* pElectment,void* pRef);

	// 释放XML Tree

	// 清空保存的XML文档内容
	
protected:
	int m_pos;

	string m_xml;
	string m_version;
	string m_encode;

	DOMElement m_root;

	int ParseXmlInfo();
	
	int ParseRoot();
	int ParseElement(DOMElement* element);
	int ParseAttribute(MLPCSTR tagString, string &tagName, AttributeMap &attribute);

	int findNextTag(string &tagName, string &beforeTag);

	int BuildXmlInfo();
};

#endif // !defined(_DOMDOCUMENT_H_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -