Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

133 lines
2.2 KiB

  1. /*++ BUILD Version: 0000 // Increment this if a change has global effects
  2. Copyright (c) 2000-2002 Microsoft Corporation
  3. Module Name:
  4. parser.h
  5. Abstract:
  6. Header file for parsing XML file
  7. Author:
  8. Xiaohai Zhang (xzhang) 22-March-2000
  9. Revision History:
  10. --*/
  11. #ifndef __PARSER_H__
  12. #define __PARSER_H__
  13. #include "windows.h"
  14. #include "objbase.h"
  15. #include "msxml.h"
  16. class CXMLLine
  17. {
  18. public:
  19. CXMLLine (IXMLDOMNode * pNode)
  20. {
  21. m_pLineNode = pNode;
  22. }
  23. ~CXMLLine ()
  24. {
  25. if (m_pLineNode)
  26. {
  27. m_pLineNode->Release();
  28. }
  29. }
  30. HRESULT GetNextLine (CXMLLine ** ppLine);
  31. HRESULT GetAddress (LPTSTR szBuf, DWORD cch);
  32. HRESULT GetPermanentID (ULONG * pID);
  33. HRESULT IsPermanentID (BOOL *pb);
  34. HRESULT IsRemove (BOOL *pb);
  35. private:
  36. IXMLDOMNode * m_pLineNode;
  37. };
  38. class CXMLUser
  39. {
  40. public:
  41. CXMLUser (IXMLDOMNode * pNode)
  42. {
  43. m_pUserNode = pNode;
  44. }
  45. ~CXMLUser ()
  46. {
  47. if (m_pUserNode)
  48. {
  49. m_pUserNode->Release();
  50. }
  51. }
  52. HRESULT GetFirstLine (CXMLLine ** ppLine);
  53. HRESULT GetNextUser (CXMLUser **ppNextUser);
  54. HRESULT GetDomainUser (LPTSTR szBuf, DWORD cch);
  55. HRESULT GetFriendlyName (LPTSTR szBuf, DWORD cch);
  56. HRESULT IsNoMerge (BOOL *pb);
  57. private:
  58. IXMLDOMNode * m_pUserNode;
  59. };
  60. class CXMLParser
  61. {
  62. public:
  63. //
  64. // Constructors / destructors
  65. //
  66. CXMLParser (void);
  67. ~CXMLParser ();
  68. //
  69. // Public functions
  70. //
  71. HRESULT SetXMLFile (LPCTSTR szFile);
  72. HRESULT GetXMLFile (LPTSTR szFile, DWORD cch);
  73. HRESULT Parse (void);
  74. HRESULT ReportParsingError ();
  75. void Release()
  76. {
  77. if (m_pDocInput)
  78. {
  79. m_pDocInput->Release();
  80. m_pDocInput = NULL;
  81. }
  82. }
  83. //
  84. // User transversal
  85. //
  86. HRESULT GetFirstUser (CXMLUser ** ppUser);
  87. protected:
  88. private:
  89. HRESULT CreateTempFiles ();
  90. private:
  91. BOOL m_bInited;
  92. TCHAR m_szXMLFile[MAX_PATH];
  93. IXMLDOMDocument * m_pDocInput;
  94. TCHAR m_szTempSchema[MAX_PATH];
  95. TCHAR m_szTempXML[MAX_PATH];
  96. };
  97. #endif // parser.h