Element.h
上传用户:hysujiao87
上传日期:2007-12-02
资源大小:156k
文件大小:2k
源码类别:

ICQ/即时通讯

开发平台:

C/C++

  1. // Element.h: interface for the CElement class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_ELEMENT_H__30C235A7_5FF4_41D9_A2C2_DBF338337D11__INCLUDED_)
  5. #define AFX_ELEMENT_H__30C235A7_5FF4_41D9_A2C2_DBF338337D11__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <afxtempl.h>
  10. #define MAX_CONTENT_LENGTH 1024
  11. class CElement;
  12. typedef int(*LPENUM_CALLBACK_FUNC)(CElement* element);
  13. typedef CTypedPtrList<CPtrList, CElement*> CElementList;
  14. class AFX_EXT_CLASS CElement
  15. {
  16. protected:
  17. CString m_tag;
  18. CString m_content;
  19. CElement* m_parent;
  20. CElementList m_children;
  21. int m_level;
  22. public:
  23. CMapStringToString _attribute;
  24. void setAttribute(LPCTSTR attribute, LPCTSTR value){
  25. _attribute.SetAt(attribute, value);
  26. }
  27. CString getAttribute(LPCTSTR attribute){
  28. _ASSERTE(attribute != NULL);
  29. if (attribute == NULL)
  30. return CString("");
  31. CString value;
  32. _attribute.Lookup(attribute, value);
  33. return value;
  34. }
  35. CString getChildContent(LPCTSTR tag){
  36. CString result;
  37. CElement *element = GetFirstChildByTag(tag);
  38. if (element == NULL)
  39. return result;
  40. result = element->get_content();
  41. return result;
  42. }
  43. CElement(CElement* parent);
  44. virtual ~CElement(); 
  45. virtual void Free();
  46. CString get_content(){return m_content;}
  47. void set_content(LPCTSTR content){m_content = content;}
  48. CString get_tag(){return m_tag;}
  49. void set_tag(LPCTSTR tag){m_tag = tag;}
  50. CElement* get_parent(){return m_parent;}
  51. void set_parent(CElement* parent){m_parent = parent;}
  52. int get_level(){return m_level;}
  53. void set_level(int level){m_level = level;}
  54. int Enumerate(LPENUM_CALLBACK_FUNC pFunc);
  55. int BuildElement(CString& xml);
  56. int AddChild(CString tag, CString content);
  57. HRESULT GetChildrenByTag(LPCTSTR tag, CElementList &list);
  58. CElement* GetFirstChildByTag(LPCTSTR tag);
  59. };
  60. #endif // !defined(AFX_ELEMENT_H__30C235A7_5FF4_41D9_A2C2_DBF338337D11__INCLUDED_)