#include "StdAfx.h" #include "MBDocInfo.h" IMPLEMENT_DYNAMIC(CMBDocInfo, CMBBaseDocObj) CMBDocInfo::CMBDocInfo(void) { m_nFakeType = DOC_UNITORDEPART; m_nEvalValue = 0; // -- ×ÜÆÀ·Ö m_nEvalNum = 0; // -- ±»ÆÀ¼Û´ÎÊý m_nViewNum = 0; //-- ä¯ÀÀ´ÎÊý m_nDownloadNum = 0; // -- ÏÂÔØ´ÎÊý m_pAttachDocMgr = NULL; m_pLinkDocMgr = NULL; } CMBDocInfo::~CMBDocInfo(void) { MBSAFE_DELETE(m_pAttachDocMgr) MBSAFE_DELETE(m_pLinkDocMgr) } CMBAttachDocMgr *CMBDocInfo::GetAttachDocMgr() { return m_pAttachDocMgr; } CMBLinkDocMgr *CMBDocInfo::GetLinkDocMgr() { return m_pLinkDocMgr; } CString CMBDocInfo::GetThumbUrlID( ) { int nDotPos = m_strThumbURL.ReverseFind(_T('.')); int nSlashPos = m_strThumbURL.ReverseFind(_T('\\')); if( nDotPos == -1 || nSlashPos == -1 ) return _T(""); return m_strThumbURL.Mid(nSlashPos+1,nDotPos-nSlashPos-1); } bool CMBDocInfo::ParseXML(CString &strXML,CString &strErrInfo) { if( strXML.IsEmpty() ) { m_nSecretLvl = 10000; // ˵Ã÷ µ÷ÓÃGetDocInfoûÓзµ»ØÈκÎÐÅÏ¢,ÉèÖÃΪ10000£¬Ãܼ¶ºÜ´óµÄÒâ˼ return true; } pugi::xml_document xmlDoc; if (!xmlDoc.load(strXML)) { return false; } /////////Çå³ý¸½¼ÓÎļþºÍ¹ØÁªÎļþ¹ÜÀíÆ÷///////// MBSAFE_DELETE(m_pAttachDocMgr) MBSAFE_DELETE(m_pLinkDocMgr) ////////////////////////////////////////////// pugi::xml_node form = xmlDoc.child(_T("Doc")); pugi::xml_node node = form; m_strCode = node.attribute(_T("Code")).value(); m_strCanDownload = node.attribute(_T("CanDownload")).value(); m_strName = node.child_value(_T("Name")); m_strVID = node.attribute(_T("VID")).value(); m_strVer = node.attribute(_T("Ver")).value(); m_nSecretLvl = node.attribute(_T("SecretLvl")).as_int(); m_strSecretName = node.attribute(_T("SecretName")).value(); m_strCreatorName = node.attribute(_T("CreatorName")).value(); m_strDTCreate = node.attribute(_T("DTCreate")).value(); m_strModifier = node.attribute(_T("Modifier")).value(); m_strModifierName = node.attribute(_T("ModifierName")).value(); m_strDTModify = node.attribute(_T("DTModify")).value(); m_strFileMD5 = node.attribute(_T("FileMD5")).value(); m_strFileServer = node.attribute(_T("FileServer")).value(); m_strFileID = node.attribute(_T("FileID")).value(); m_strPdfFileID = node.attribute(_T("PdfFileID")).value(); m_strSwfFileID = node.attribute(_T("SwfFileID")).value(); m_strThumbFileID = node.attribute(_T("ThumbFileID")).value(); m_strCanEdit = node.attribute(_T("CanEdit")).value(); m_strVersion = node.attribute(_T("Version")).value(); m_strPhase = node.attribute(_T("Phase")).value(); m_strCanEdit = node.attribute(_T("CanEdit")).value(); m_strCabinetID = node.attribute(_T("CabinetID")).value(); m_strCabinetName = node.attribute(_T("CabinetName")).value(); m_strCatalogID = node.attribute(_T("CatalogID")).value(); m_strFileName = node.child_value(_T("FileName")); m_strCatalogPath = node.child_value(_T("CatalogPath")); m_strTags = node.child_value(_T("Tags")); m_strNote = node.child_value(_T("Note")); // ±¸×¢ m_strDesc = node.child_value(_T("Desc")); // ÃèÊö m_nEvalValue = node.attribute(_T("EvalValue")).as_int(); // -- ×ÜÆÀ·Ö m_nEvalNum = node.attribute(_T("EvalNum")).as_int(); // -- ±»ÆÀ¼Û´ÎÊý m_nViewNum = node.attribute(_T("ViewNum")).as_int(); //-- ä¯ÀÀ´ÎÊý m_nDownloadNum = node.attribute(_T("DownloadNum")).as_int(); // -- ÏÂÔØ´ÎÊý m_strExpDate = node.attribute(_T("ExpDate")).value(); // ¨C ±£´æÆÚÏÞ£¬Îª¿Õ±íʾÓÀ¾Ã±£´æ m_strAuthor = node.attribute(_T("Author")).value(); // ¨C Îĵµ×÷ÕßÐÕÃû m_strAuthorDepart = node.attribute(_T("AuthorDepart")).value(); // ¨C Îĵµ×÷Õß²¿ÃÅ // locker m_strLocker = node.attribute(_T("Locker")).value(); m_strLockerName = node.attribute(_T("LockerName")).value(); m_strLockTime = node.attribute(_T("LockTime")).value(); m_strDocType = node.attribute(_T("DocType")).value(); /////////////////¸½¼ÓÎļþÐÅÏ¢///////////////////////////////////// m_pAttachDocMgr = new CMBAttachDocMgr(); form = node.child(_T("Attach")); for(pugi::xml_node tmpNode = form; tmpNode; tmpNode = tmpNode.next_sibling(_T("Attach"))) { CMBAttachDocInfo *pAttachDocInfo = new CMBAttachDocInfo(); pAttachDocInfo->m_strID = tmpNode.attribute(_T("ID")).value(); // id pAttachDocInfo->m_strFileServer = tmpNode.attribute(_T("FileServer")).value(); // Îļþ·þÎñÆ÷±êʶ pAttachDocInfo->m_strFileID = tmpNode.attribute(_T("FileID")).value(); // ÎļþID pAttachDocInfo->m_nFileSize = tmpNode.attribute(_T("FileSize")).as_int(); // Îļþ´óС pAttachDocInfo->m_strCreateTime = tmpNode.attribute(_T("CreateTime")).value(); // ´´½¨Ê±¼ä pAttachDocInfo->m_strFileName = tmpNode.child_value(_T("FileName")); // ÎļþÃû³Æ if( !m_pAttachDocMgr->AddAttachDocInfo(pAttachDocInfo) ) { MBSAFE_DELETE(pAttachDocInfo) } } /////////////////¹ØÁªÎļþÐÅÏ¢///////////////////////////////////// m_pLinkDocMgr = new CMBLinkDocMgr(); form = node.child(_T("LinkDoc")); for(pugi::xml_node tmpNode = form; tmpNode; tmpNode = tmpNode.next_sibling(_T("LinkDoc"))) { CMBLinkDocInfo *pLinkDocInfo = new CMBLinkDocInfo(); pLinkDocInfo->m_strID = tmpNode.attribute(_T("ID")).value(); // ÎĵµµÄid pLinkDocInfo->m_nFileSize = tmpNode.attribute(_T("FileSize")).as_int(); // Îļþ´óС pLinkDocInfo->m_strName = tmpNode.child_value(_T("FileName")); // ÎļþÃû³Æ if( !m_pLinkDocMgr->AddLinkDocInfo(pLinkDocInfo) ) { MBSAFE_DELETE(pLinkDocInfo) } } return true; }