#include "StdAfx.h" #include "MBTNXXXXXXMgr.h" CMBTNXXXXXXMgr::CMBTNXXXXXXMgr(void) { RemoveAll(); } CMBTNXXXXXXMgr::~CMBTNXXXXXXMgr(void) { RemoveAll(); } void CMBTNXXXXXXMgr::GetVector( CMBTNXXXXXXVector &vector ) { vector.clear(); vector = m_vector; } bool CMBTNXXXXXXMgr::Add( CMBTNXXXXXX *pTNXXXXXX ) { if( NULL == pTNXXXXXX ) return false; m_vector.push_back(pTNXXXXXX); return true; } bool CMBTNXXXXXXMgr::RemoveAll() { CMBTNXXXXXXVector::iterator it; CMBTNXXXXXX *pTNXXXXXX = NULL; for( it = m_vector.begin();it != m_vector.end();it++ ) { pTNXXXXXX = *it; delete pTNXXXXXX; pTNXXXXXX = NULL; } m_vector.clear(); return true; } CString CMBTNXXXXXXMgr::GenXml() { CMBTNXXXXXXVector::iterator it; CMBTNXXXXXX *pTNXXXXXX = NULL; CString strXml,strTmpXml; for( it = m_vector.begin();it != m_vector.end();it++ ) { pTNXXXXXX = *it; strTmpXml += pTNXXXXXX->GenXml(); } strXml.Format(_T("%s"),strTmpXml); return strXml; } bool CMBTNXXXXXXMgr::ParseXml( CString strXml,CString &strErrInfo ) { RemoveAll(); pugi::xml_document xmlDoc; CString strFileSize; if (!xmlDoc.load(strXml)) { return false; } pugi::xml_node form = xmlDoc.child(_T("Body")).child(_T("MsLst")).child(_T("Ms")); for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Ms"))) { CMBTNXXXXXX *pTNXXXXXX = new CMBTNXXXXXX(); pTNXXXXXX->m_strMID = node.attribute(_T("MID")).value(); pTNXXXXXX->m_strSID = node.attribute(_T("SID")).value(); pTNXXXXXX->m_strVID = node.attribute(_T("VID")).value(); pTNXXXXXX->m_strOrder = node.attribute(_T("Order")).value(); pTNXXXXXX->m_strEffect = node.attribute(_T("Effect")).value(); pTNXXXXXX->m_strInvalidate = node.attribute(_T("Invalidate")).value(); pugi::xml_node attrNode = node.child(_T("Attrs")).child(_T("Attr")); for(pugi::xml_node tmpNode = attrNode; tmpNode; tmpNode = tmpNode.next_sibling(_T("Attr"))) { CMBTNXXXXXXFiled *pFiled = new CMBTNXXXXXXFiled(); pFiled->m_strFiled = tmpNode.attribute(_T("Name")).value(); pFiled->m_strValue = tmpNode.child_value(); if( !pTNXXXXXX->GetFieldMgr()->Add(pFiled) ) { delete pFiled; pFiled = NULL; } } if( !Add( pTNXXXXXX ) ) { delete pTNXXXXXX; pTNXXXXXX = NULL; } }// end for(pugi::xml_node node = form; node; node = node.next_sibling(_T("Ms"))) return true; } int CMBTNXXXXXXMgr::GetCount() { return m_vector.size(); } CString CMBTNXXXXXXMgr::GetFirstKeyValue(CString strKey) { CMBTNXXXXXXVector::iterator it; CMBTNXXXXXX *pTNXXXXXX = NULL; for( it = m_vector.begin();it != m_vector.end();it++ ) { pTNXXXXXX = *it; CMBTNXXXXXXFiled *pFiled = pTNXXXXXX->GetFieldMgr()->Get( strKey); if( NULL != pFiled ) { return pFiled->m_strValue; } } return _T(""); } CString CMBTNXXXXXXMgr::GetFirstMID() { CMBTNXXXXXXVector::iterator it; CMBTNXXXXXX *pTNXXXXXX = NULL; for( it = m_vector.begin();it != m_vector.end();it++ ) { pTNXXXXXX = *it; return pTNXXXXXX->m_strMID; } return _T(""); } CMBTNXXXXXX *CMBTNXXXXXXMgr::GetFirstTNXXXXXX() { CMBTNXXXXXXVector::iterator it; CMBTNXXXXXX *pTNXXXXXX = NULL; for( it = m_vector.begin();it != m_vector.end();it++ ) { pTNXXXXXX = *it; return pTNXXXXXX; } return NULL; }