Files
2022-10-26 12:25:11 +08:00

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;
}
}