61 lines
1.2 KiB
C++
61 lines
1.2 KiB
C++
#include "StdAfx.h"
|
|
#include ".\stringtableparser.h"
|
|
|
|
|
|
StringTableParser::StringTableParser(void)
|
|
{
|
|
m_XMLParser.Init();
|
|
}
|
|
|
|
StringTableParser::~StringTableParser(void)
|
|
{
|
|
}
|
|
|
|
|
|
VOID StringTableParser::Release()
|
|
{
|
|
m_mapMsgString.clear();
|
|
}
|
|
|
|
BOOL StringTableParser::Load( TCHAR* pszFileName )
|
|
{
|
|
if( !m_XMLParser.Load( pszFileName ) )
|
|
return FALSE;
|
|
|
|
long nStingCount = 0;
|
|
NODELISTPtr pStringNodeList = m_XMLParser.FindNodeList( L"//STRING", nStingCount );
|
|
if( pStringNodeList == NULL )
|
|
return FALSE;
|
|
|
|
DWORD dwStringKey = 0;
|
|
std::string strMsg;
|
|
|
|
for( long nString = 0; nString < nStingCount; nString++ )
|
|
{
|
|
NODEPtr pStringNode = m_XMLParser.FindNode( pStringNodeList, nString );
|
|
if( pStringNode == NULL ) continue;
|
|
|
|
// 스크링키를 얻는다.
|
|
dwStringKey = 0;
|
|
strMsg.clear();
|
|
if( !m_XMLParser.GetAttriDataDWORD( pStringNode, L"KEY", dwStringKey ) ) continue;
|
|
if( !m_XMLParser.GetAttriDataStr( pStringNode, L"MSG", strMsg ) ) continue;
|
|
|
|
m_mapMsgString.insert( std::make_pair( dwStringKey, strMsg ) );
|
|
}
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
VOID StringTableParser::GetMessage( DWORD dwKey, std::string& strMsg )
|
|
{
|
|
strMsg.clear();
|
|
|
|
STRING_MAP_ITER iter = m_mapMsgString.find( dwKey );
|
|
if( iter != m_mapMsgString.end() ) //존재하면.
|
|
{
|
|
strMsg = iter->second;
|
|
}
|
|
}
|