boost库读写xml

来源:互联网 发布:剑网3笔记本优化版 编辑:程序博客网 时间:2024/06/05 15:34
#include <boost/property_tree/xml_parser.hpp>
#include <boost/property_tree/ptree.hpp>

#include <boost\typeof\typeof.hpp>


void  RiskParams::LoadConfigFromFile()
{
CString strCurAppPath;
XTradeUtil::GetCurrentAppPath(strCurAppPath);


char  szConfigPath[MAX_PATH];
memset(szConfigPath, 0, sizeof(MAX_PATH));


USES_CONVERSION;


strcpy_s(szConfigPath, T2A(strCurAppPath));
sprintf_s(szConfigPath + strlen(szConfigPath), MAX_PATH - strlen(szConfigPath), "%s", "\\config\\risk_params.xml");


boost::property_tree::ptree proTree;


//TCHAR szFilePath[MAX_PATH + 1]={0};
//GetModuleFileName(NULL, szFilePath, MAX_PATH);
//setlocale(LC_ALL,"Chinese-simplified");
boost::property_tree::xml_parser::read_xml(szConfigPath, proTree);


boost::property_tree::ptree globalTag = proTree.get_child("Configs.GlobalParams");
memset(&m_globalParams, 0, sizeof(CGlobalParams));


strcpy_s(m_globalParams.m_szDbServerIP, globalTag.get("DbServerIP", "0.0.0.0").c_str());
m_globalParams.m_nDbServerPort = atoi(globalTag.get("DbServerPort", "9999").c_str());


strcpy_s(m_globalParams.m_szTradeServerIP, globalTag.get("TradeServerIP", "0.0.0.0").c_str());
m_globalParams.m_nTradeServerPort = atoi(globalTag.get("TradeServerPort", "9999").c_str());


strcpy_s(m_globalParams.m_szLogServerIP, globalTag.get("LogServerIP", "0.0.0.0").c_str());
m_globalParams.m_nLogServerPort = atoi(globalTag.get("LogServerPort", "9999").c_str());


strcpy_s(m_globalParams.m_szQuoteServerIP, globalTag.get("QuoteServerIP", "0.0.0.0").c_str());
m_globalParams.m_nQuoteServerPort = atoi(globalTag.get("QuoteServerPort", "9999").c_str());
strcpy_s(m_globalParams.m_szQuoteUser, globalTag.get("QuoteUser", "").c_str());
strcpy_s(m_globalParams.m_szQuotePass, globalTag.get("QuotePass", "").c_str());
strcpy_s(m_globalParams.m_szQuoteAuthCode, globalTag.get("QuoteAuthCode", "").c_str());


string strCloseConfirm = globalTag.get("CloseConfirm", "0");
if (strCloseConfirm.compare("0") == 0)
m_globalParams.m_bCloseConfirm = false;
else
m_globalParams.m_bCloseConfirm = true;


string strOrderConfirm = globalTag.get("OrderConfirm", "0");
if (strOrderConfirm.compare("0") == 0)
m_globalParams.m_bOrderConfirm = false;
else
m_globalParams.m_bOrderConfirm = true;


string strShowEntrustSuccess = globalTag.get("ShowEntrustSuccess", "1");
if (strShowEntrustSuccess.compare("0") == 0)
m_globalParams.m_bShowEntrustSuccess = false;
else
m_globalParams.m_bShowEntrustSuccess = true;


boost::property_tree::ptree operatorTag = proTree.get_child("Configs.OperatorParams");
m_pOperatorParams = new COperatorParams();
memset(m_pOperatorParams, 0, sizeof(COperatorParams));
m_pOperatorParams->m_nBuyUpTickNum = atoi(operatorTag.get("BuyUpTickNum", "50").c_str());
m_pOperatorParams->m_nSellDownTickNum = atoi(operatorTag.get("SellDownTickNum", "50").c_str());
}


void  RiskParams::SaveConfigSetting()
{
using boost::property_tree::ptree;


CString strCurAppPath;
XTradeUtil::GetCurrentAppPath(strCurAppPath);


char  szConfigPath[MAX_PATH];
memset(szConfigPath, 0, sizeof(MAX_PATH));


USES_CONVERSION;


strcpy_s(szConfigPath, T2A(strCurAppPath));
sprintf_s(szConfigPath + strlen(szConfigPath), MAX_PATH - strlen(szConfigPath), "%s", "\\config\\risk_params.xml");


char szFormat[256];
ptree ptWrite;
//DB_Server
ptWrite.put<string>("Configs.GlobalParams.DbServerIP", m_globalParams.m_szDbServerIP);
snprintf(szFormat, sizeof(szFormat), "%d", m_globalParams.m_nDbServerPort);
ptWrite.put<string>("Configs.GlobalParams.DbServerPort", szFormat);
//Gateway
ptWrite.put<string>("Configs.GlobalParams.TradeServerIP", m_globalParams.m_szTradeServerIP);
snprintf(szFormat, sizeof(szFormat), "%d", m_globalParams.m_nTradeServerPort);
ptWrite.put<string>("Configs.GlobalParams.TradeServerPort", szFormat);
//Logger Server
ptWrite.put<string>("Configs.GlobalParams.LogServerIP", m_globalParams.m_szLogServerIP);
snprintf(szFormat, sizeof(szFormat), "%d", m_globalParams.m_nLogServerPort);
ptWrite.put<string>("Configs.GlobalParams.LogServerPort", szFormat);
//Quote Server
ptWrite.put<string>("Configs.GlobalParams.QuoteServerIP", m_globalParams.m_szQuoteServerIP);
snprintf(szFormat, sizeof(szFormat), "%d", m_globalParams.m_nQuoteServerPort);
ptWrite.put<string>("Configs.GlobalParams.QuoteServerPort", szFormat);


ptWrite.put<string>("Configs.GlobalParams.QuoteUser", m_globalParams.m_szQuoteUser);
ptWrite.put<string>("Configs.GlobalParams.QuotePass", m_globalParams.m_szQuotePass);
ptWrite.put<string>("Configs.GlobalParams.QuoteAuthCode", m_globalParams.m_szQuoteAuthCode);


// switch
if(m_globalParams.m_bCloseConfirm)
ptWrite.put<string>("Configs.GlobalParams.CloseConfirm", "1");
else
ptWrite.put<string>("Configs.GlobalParams.CloseConfirm", "0");


if(m_globalParams.m_bOrderConfirm)
ptWrite.put<string>("Configs.GlobalParams.OrderConfirm", "1");
else
ptWrite.put<string>("Configs.GlobalParams.OrderConfirm", "0");


if(m_globalParams.m_bShowEntrustSuccess)
ptWrite.put<string>("Configs.GlobalParams.ShowEntrustSuccess", "1");
else
ptWrite.put<string>("Configs.GlobalParams.ShowEntrustSuccess", "0");




//operator config
snprintf(szFormat, sizeof(szFormat), "%d", m_pOperatorParams->m_nBuyUpTickNum);
ptWrite.put<string>("Configs.OperatorParams.BuyUpTickNum", szFormat);


snprintf(szFormat, sizeof(szFormat), "%d", m_pOperatorParams->m_nSellDownTickNum);
ptWrite.put<string>("Configs.OperatorParams.SellDownTickNum", szFormat);


auto settings = boost::property_tree::xml_writer_make_settings<std::string>('\t', 1);
boost::property_tree::xml_parser::write_xml(szConfigPath, ptWrite, std::locale(), settings);
}

原创粉丝点击