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

📄 xml.h

📁 PC与PDA数据交互系统的原代码 仅供参考.非本人所编写的
💻 H
字号:
#ifndef __XML__
#define __XML__

#include <afx.h>
#include <afxtempl.h>

//class COut_XML : public CObject
class COut_XML
{
public:
	COut_XML();
	~COut_XML();
	void Open(const CString xmlFileName, int &nOpened, CString rootName=_T("PdaComm"));
	int Is_open();
	void Close();

	void PutHead(const CString name);						
	void PutItem(const CString name, const CString value);	
	void PutTail(const CString name);						
	void PutRecordHead();									
	void PutRecordTail();									
	void PutFile(const CString fileName);					
private:
	CString tab();
	HANDLE m_hFile;
	int	m_level;
	CString m_rootName;
	void WriteLn(const CString s);
};

class CInFile : public CObject
{
public:
	CString		m_line;
	HANDLE m_hFile;

	BOOL		eof();

	CInFile(CString fileName);
	~CInFile();
	BOOL        isOpen();
	CString		getItem();
private:
	BOOL m_bEof;
	void getline();
};

class CXmlNode;

class CFindItem
{
public:
	CFindItem() {m_path=_T("");m_pNode=NULL;};
	CFindItem(CString Path, CXmlNode *PNode) { m_path=Path; m_pNode=PNode;};
	CString m_path;
	CXmlNode *m_pNode;
}; 

typedef CArray<CFindItem, CFindItem&> CXmlFindTable;

typedef CArray<CXmlNode, CXmlNode&> CSubNodes;

class CXmlNode : public CObject
{
public:
	// Constructors
	CXmlNode();
	CXmlNode(CString name, CString value=_T(""));
	CXmlNode(const CXmlNode& other);
	CXmlNode& operator = (const CXmlNode& other);

	// Destructor
	~CXmlNode();

	// Member functions
	BOOL Open(CString xmlFilename, CString rootName=_T("PdaComm"));
	void Close();
	CString GetFldValue(const CString fldName);
	void GetNodesTable(CXmlFindTable& table, const CString infoType, const CString recType);
	void GetNodesTable(CXmlFindTable& table, const CString infoType);
public:
	CString m_nodeName;
	CString m_nodeValue;
	CSubNodes m_subNodes;

private:
	void CopyFrom(const CXmlNode& other);
	BOOL LoadXMLNode(CInFile &inFile, CString head);
	CXmlNode* Locate(CString what);
	void FindNodes(CXmlFindTable& table, CString what, CString path, int level); 
	void RemoveAll();
};


typedef CArray<CString, CString&> CStringTable;

class CIn_XML : public CObject
{
public:
	CIn_XML();
	~CIn_XML();
	void	Open(const CString xmlFile, int &nOpened, CString rootName=_T("PdaComm"));
	int		Is_open();
	void	Close();
	BOOL	SaveTo(const CString xmlFile);

	int		FindRecords(const CString infoType, const CString recordType, int &RecordsCount);
	int		FindRecords(const CString infoType, int &RecordsCount);
	int		GetRecordsCount(int &RecordsCount);
	CString GetRecordPath(int recordNo, LPTSTR RecordPath);
	CString GetRecordPath(int recordNo);
	CString GetItemValue(int recordNo, const CString itemName, LPTSTR ItemValue);
	CString GetItemValue(int recordNo, const CString itemName);
	int		GetInfoTable(CStringTable &InfoTable);

	int		FindRecords(const CString infoType, const CString recordType);
	int		FindRecords(const CString infoType);
	CString GetFile(int recordNo);
	CString GetPath(int recordNo);
private:
	CXmlFindTable m_table;
	BOOL m_isOpen;
	void WriteNode(CXmlNode &Node, COut_XML *pOutXML);
public:
	CXmlNode m_root;
};

#endif __XML__

⌨️ 快捷键说明

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