#pragma once /************************************************************************/ /* MS XML ¸¦ ÆíÈ÷ ¾²±â À§ÇÑ RAPPER CLASS */ /* description : DB TABLE Çü½Ä¿¡ ¸ÂÃè´Ù. /* date : 2006/7/12 /* creator : Á¶Àç½Ä /************************************************************************/ #import #include #include typedef MSXML2::IXMLDOMDocument2Ptr XMLDOMPtr; typedef MSXML2::IXMLDOMProcessingInstructionPtr XMLPIPtr; typedef MSXML2::IXMLDOMNodeListPtr NODELISTPtr; typedef MSXML2::IXMLDOMNamedNodeMapPtr ATTRIMAPPtr; //NamedNodeMapÀº ÁÖ·Î ¼Ó¼º°ª ã´Âµ¥ »ç¿ëµÇ¾î¼­ ÀÌ·¸°Ô Á¤ÀÇÇß´Ù. typedef MSXML2::IXMLDOMNodePtr NODEPtr; typedef MSXML2::IXMLDOMElementPtr ELEMENTPtr; class XMLParser { public: XMLParser(void); ~XMLParser(void); private: XMLDOMPtr m_pDoc; XMLPIPtr m_pPI; _variant_t m_varData; _variant_t m_varAttrValue; _variant_t m_varXMLFile; public: BOOL Init(); BOOL Load( char* pszFile ); BOOL Save(); ////////////////////////////////////////////////////////////////////////// // °Ë»ö ÇÔ¼öµé.. //³ëµå °Ë»ö ÇÔ¼öµé.. NODELISTPtr FindNodeList( BSTR strElem, long& nNodeCount ); ATTRIMAPPtr FindAttriMap( NODELISTPtr pNodeList, long nIndex ); NODEPtr FindNode( NODELISTPtr pNodeList, long nIndex ); NODELISTPtr FindChildNodeList( NODEPtr pNode, long& nNodeCount ); //ÇöÀç ³ëµåÀÇ ¹Ù·Î ¾Æ·¡ ´Ü°èÀÇ ³ëµåµéÀÇ ¸®½ºÆ®¸¦ °¡Á®¿Â´Ù. // ¿¤·¹¸àÆ®¿Í ¼Ó¼º°ªÀ¸·Î °Ë»öÇÏ´Â ÇÔ¼öµé.. NODELISTPtr FindNodeListByAttr( const TCHAR* pszElem, const TCHAR* pszAttr, _variant_t var ); NODELISTPtr Query( const TCHAR* pszQuery ); NODEPtr SingleQuery( const TCHAR* pszQuery ); ////////////////////////////////////////////////////////////////////////// // Àбâ ÇÔ¼öµé.. ////////////////////////////////////////////////////////////////////////// // ¿¤·¹¸ÕÆ®¸¦ ¾ò´Â ÇÔ¼ö¿Í, °¢°¢ÀÇ ¿¤·¹¸ÕÆ®ÀÇ ¼Ó¼º °ªÀ» ¾ò´Â ÇÔ¼ö //³ëµå´Â ÇϳªÀÇ ÀÚ·áÇ¥Çö ´ÜÀ§ÀÌ´Ù. //³ëµå´Â ¿¤·¹¸àÆ®°¡ µÉ¼öµµ ÀÖ°í, ¼Ó¼ºµµ µÉ¼ö ÀÖ´Ù. //À̸§À¸·Î ¼Ó¼º°ª ¾ò±â.(NODE) BOOL GetAttriData( NODEPtr pNode, _bstr_t strAttriName, _bstr_t& bstrData ); BOOL GetAttriDataStr( NODEPtr pNode, _bstr_t strAttriName, std::string& strData ); BOOL GetAttriDataInt( NODEPtr pNode, _bstr_t strAttriName, int& nData ); BOOL GetAttriDataDWORD( NODEPtr pNode, _bstr_t strAttriName, DWORD& dwData ); BOOL GetAttriDataFloat( NODEPtr pNode, _bstr_t strAttriName, float& fData ); BOOL GetAttriDataBYTE( NODEPtr pNode, _bstr_t strAttriName, BYTE& byData ); BOOL GetAttriDataBOOL( NODEPtr pNode, _bstr_t strAttriName, BOOL& bData ); //¼Ó¼º ¹øÈ£·Î ¼Ó¼º°ª ¾ò±â BOOL GetAttriData( NODEPtr pNode, long nIndex, _bstr_t& bstrData ); BOOL GetAttriDataStr( NODEPtr pNode, long nIndex, std::string& strData ); BOOL GetAttriDataInt( NODEPtr pNode, long nIndex, int& nData ); BOOL GetAttriDataDWORD( NODEPtr pNode, long nIndex, DWORD& dwData ); BOOL GetAttriDataFloat( NODEPtr pNode, long nIndex, float& fData ); BOOL GetAttriDataBYTE( NODEPtr pNode, long nIndex, BYTE& byData ); BOOL GetAttriDataBOOL( NODEPtr pNode, long nIndex, BOOL& bData ); private: //¼Ó¼º ³ëµå °ªÀ» ¾ò´Â´Ù. NODEPtr GetAttriNode( NODEPtr pNode, _bstr_t strAttriName ); NODEPtr GetAttriNode( NODEPtr pNode, long nIndex ); //ÇØ´ç ÀÚ·áÇüÀÇ °ªÀ» ¾ò¾î¿Â´Ù. BOOL GetNodeDataBSTR( NODEPtr pNode, _bstr_t& strData ); BOOL GetNodeDataStr( NODEPtr pNode, std::string& strData ); BOOL GetNodeDataInt( NODEPtr pNode, int& nData ); BOOL GetNodeDataDWORD( NODEPtr pNode, DWORD& dwData ); BOOL GetNodeDataFloat( NODEPtr pNode, float& fData ); BOOL GetNodeDataBYTE( NODEPtr pNode, BYTE& byData ); BOOL GetNodeDataBOOL( NODEPtr pNode, BOOL& bData ); ////////////////////////////////////////////////////////////////////////// // ¾²±â ÇÔ¼öµé... public: //¼Ó¼º ¾²±â. BOOL SetAttribute( ELEMENTPtr pElem, BSTR strName, _variant_t value ); BOOL SetAttributeStr( ELEMENTPtr pElem, BSTR strName, std::string strValue ); BOOL SetAttributeInt( ELEMENTPtr pElem, BSTR strName, int nValue ); BOOL SetAttributeDWORD( ELEMENTPtr pElem, BSTR strName, DWORD dwValue ); BOOL SetAttributeFloat( ELEMENTPtr pElem, BSTR strName, float fValue ); BOOL SetAttributeBYTE( ELEMENTPtr pElem, BSTR strName, BYTE byValue ); BOOL SetAttributeBOOL( ELEMENTPtr pElem, BSTR strName, BOOL bValue ); ////////////////////////////////////////////////////////////////////////// // ±â´É ÇÔ¼öµé... public: ELEMENTPtr CreateElement( BSTR strNewElem ); ELEMENTPtr InsertElement( BSTR strParent, BSTR strNewElem ); BOOL RemoveElement( TCHAR* pszElem, TCHAR* pszFindAttr, _variant_t var ); BOOL UpdateElement( TCHAR* pszElem, TCHAR* pszFindAttr, _variant_t FindVar, TCHAR* pszModifyAttr, _variant_t ModifyVar ); BOOL RemoveElement( const TCHAR* pszElem ); private: BOOL _UpdateNodeList( NODELISTPtr pNodeList, TCHAR* pszModifyAttr, _variant_t ModifyVar ); };