#include "StdAfx.h" #include "MBTNXXXObjMgr2.h" CMBTNXXXObjMgr2::CMBTNXXXObjMgr2(void) { RemoveAllObj(); m_nRecords = 0; m_nTotalPages = 0; m_nCurPage = 0; m_nPageSize = 0; } CMBTNXXXObjMgr2::~CMBTNXXXObjMgr2(void) { RemoveAllObj(); } void CMBTNXXXObjMgr2::GetObjVector( CMBTNXXXObjVector &vectorObj) { vectorObj.clear(); vectorObj = m_vectorObj; } CMBTNXXXObj *CMBTNXXXObjMgr2::GetObj( CString strMID,CString strObjID ) { if( strObjID.IsEmpty() ) return NULL; CMBTNXXXObjVector::iterator it; CMBTNXXXObj *pObj = NULL; for( it = m_vectorObj.begin();it != m_vectorObj.end();it++ ) { pObj = *it; if( pObj->m_strMID == strMID && pObj->m_strObjID == strObjID ) return pObj; } return NULL; } bool CMBTNXXXObjMgr2::AddObj( CMBTNXXXObj *pObj ) { if( NULL == pObj || pObj->m_strObjID.IsEmpty() ) return false; m_vectorObj.push_back(pObj); return true; } bool CMBTNXXXObjMgr2::RemoveAllObj() { CMBTNXXXObjVector::iterator it; CMBTNXXXObj *pObj = NULL; for( it = m_vectorObj.begin();it != m_vectorObj.end();it++ ) { pObj = *it; delete pObj; pObj = NULL; } m_vectorObj.clear(); return true; } bool CMBTNXXXObjMgr2::ParseXml2(CString strXml,CString &strErrInfo) { if( strXml.IsEmpty() ) return true; CString strRecords,strTotalPages, strCurPage,strPageSize; pugi::xml_document xmlDoc; if (!xmlDoc.load(strXml)) { return false; } pugi::xml_node bodyNode = xmlDoc.child(_T("Body")); m_strSessionID = bodyNode.child_value(_T("SessionID")); strRecords = bodyNode.child_value(_T("Records")); strTotalPages = bodyNode.child_value(_T("TotalPages")); strCurPage = bodyNode.child_value(_T("CurPage")); strPageSize = bodyNode.child_value(_T("PageSize")); m_nRecords = _ttoi(strRecords); m_nTotalPages = _ttoi(strTotalPages); m_nCurPage = _ttoi(strCurPage); m_nPageSize = _ttoi(strPageSize); pugi::xml_node objNode = xmlDoc.child(_T("Body")).child(_T("ObjList")).child(_T("Obj")); for(pugi::xml_node node = objNode; node; node = node.next_sibling(_T("Obj"))) { CMBTNXXXObj *pObj = new CMBTNXXXObj(); pObj->m_strObjID = node.attribute(_T("SID")).value(); pObj->m_strSVID = node.attribute(_T("SVID")).value(); pObj->m_strMID = node.attribute(_T("MID")).value(); pugi::xml_node nodeAttr = node.child(_T("ObjAttr")).child(_T("Attr")); for(pugi::xml_node nodeTmp = nodeAttr; nodeTmp; nodeTmp = nodeTmp.next_sibling(_T("Attr"))) { CMBTNXXXAttr *pAttr = new CMBTNXXXAttr(); pAttr->m_strName = nodeTmp.attribute(_T("Name")).value(); pAttr->m_strType = nodeTmp.attribute(_T("Type")).value(); pAttr->m_strDispName = nodeTmp.child_value(_T("DispName")); pAttr->m_strVaule = nodeTmp.child_value(_T("Value")); pAttr->m_strTabLable = nodeTmp.attribute(_T("TabLable")).value(); if( !pObj->AddAttr(pAttr) ) { delete pAttr; pAttr = NULL; } } if( !AddObj( pObj ) ) { delete pObj; pObj = NULL; } } return true; } // ¿ÉÒÔÏÂÔØ //S_ID CHAR (36), //S_FILE_SERVER CHAR (32), //S_FILE_NAME VARCHAR (256), //G_FILE_ID CHAR (36), //S_FILE_TYPE CHAR (10), //N_FILE_SIZE INTERGER (8), //G_PDF_FILE_ID CHAR (36), //G_FLASH_FILE_ID CHAR (36), //G_THUMB_IMAGE_ID CHAR (36), //S_FILE_MD5 CHAR (32), CString CMBTNXXXObjMgr2::GenDldXml() { CMBTNXXXObjVector::iterator it; CMBTNXXXObj *pObj = NULL; CMBTNXXXAttr *pTNXXXAttr = NULL; CString strID,strFileSvr,strFileName,strFileID,strFileType,strFileSize,strFileMD5; CString strXml,strObjXml,strObjsXml; for( it = m_vectorObj.begin();it != m_vectorObj.end();it++ ) { pObj = *it; // ÏÂÔØÎļþ if( !pObj->m_bDldFile ) continue; strID = pObj->m_strObjID; pTNXXXAttr = pObj->GetAttr( _T("S_FILE_SERVER") ); if( pTNXXXAttr != NULL ){ strFileSvr = pTNXXXAttr->m_strVaule; } pTNXXXAttr = pObj->GetAttr( _T("S_FILE_NAME") ); if( pTNXXXAttr != NULL ){ strFileName = pTNXXXAttr->m_strVaule; } pTNXXXAttr = pObj->GetAttr( _T("G_FILE_ID") ); if( pTNXXXAttr != NULL ){ strFileID = pTNXXXAttr->m_strVaule; } pTNXXXAttr = pObj->GetAttr( _T("S_FILE_TYPE") ); if( pTNXXXAttr != NULL ){ strFileType = pTNXXXAttr->m_strVaule; } pTNXXXAttr = pObj->GetAttr( _T("N_FILE_SIZE") ); if( pTNXXXAttr != NULL ){ strFileSize = pTNXXXAttr->m_strVaule; } pTNXXXAttr = pObj->GetAttr( _T("G_PDF_FILE_ID") ); if( pTNXXXAttr != NULL ){ } pTNXXXAttr = pObj->GetAttr( _T("G_THUMB_IMAGE_ID") ); if( pTNXXXAttr != NULL ){ } pTNXXXAttr = pObj->GetAttr( _T("S_FILE_MD5") ); if( pTNXXXAttr != NULL ){ strFileMD5 = pTNXXXAttr->m_strVaule; } if( strFileSvr.IsEmpty() || strFileID.IsEmpty() ) continue; strObjXml.Format(_T(""),strID,strFileSvr,strFileID,strFileType,strFileSize,strFileMD5,strFileName); strObjsXml += strObjXml; } if( strObjsXml.IsEmpty() ) return _T(""); strXml.Format(_T("%s"),strObjsXml); return strXml; }