当前位置: 代码迷 >> VC/MFC >> MFC中如何打开一个XML文件并将内容写入编辑框
  详细解决方案

MFC中如何打开一个XML文件并将内容写入编辑框

热度:471   发布时间:2016-05-02 03:57:19.0
MFC中怎么打开一个XML文件并将内容写入编辑框
新手刚接触mfc,用tinyxml在做。
------解决思路----------------------
xmltext是std::cstring的,不能直接转LPCSTR

还有,tinyxml貌似不支持unicode,你拿到的值都是ANSI编码的,不能赋值给wchar_t变量

LPCSTR strXML = xmltext.c_str();

------解决思路----------------------
你的工程是Unicode编码的,所以传入编辑框的字符串必须是Unidoe的wchar_t*
而tinyxml解析出来的要么是utf-8要么是ANSI要么是GB2312 GBK等。。。你先确定你的xml的内容是什么编码的,如果你用记事本
创建的xml,通常内容是多自己编码的,你试试这么转码:
wchar_t* GB2312ToUnicode(const char* szGBString)
{
        UINT nCodePage = 936; //GB2312
        int nLength=MultiByteToWideChar(nCodePage,0,szGBString,-1,NULL,0);
        wchar_t* pBuffer = new wchar_t[nLength+1];
        MultiByteToWideChar(nCodePage,0,szGBString,-1,pBuffer,nLength);
        pBuffer[nLength]=0;
        return pBuffer;
}


把strXml传入,把GB2312ToUnicode返回的指针传入SetDlgItemText(nID, lpszString)的lpszString
------解决思路----------------------
char* CNodeSystemApp::CStringWToAnsi(CStringW& str)
{
LPCWSTR pWcs = (LPCWSTR)str;
int strlen = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)pWcs, -1, NULL, 0, NULL, NULL);
char* strAnsi = new char[strlen + 1];
memset(strAnsi, 0, strlen + 1);
WideCharToMultiByte (CP_ACP, 0, (LPWSTR)pWcs, -1, strAnsi, strlen, NULL, NULL);
return strAnsi;
}
  相关解决方案