win32 编码转化函数

来源:互联网 发布:易语言 数组对比 编辑:程序博客网 时间:2024/06/05 01:12

 <?xml version="1.0" encoding="GBK"?>
<chat id="1398034731" isAttach="0">
<sendtime>2011-10-29 14:11:53</sendtime>
<attach/>
<context><![CDATA[%3cP%3e%e4%bd%a0%e5%a5%bd%3c/P%3e]]></context>
</chat>

void CRRRDlg::OnBtnXml()
{
 // TODO: Add your control notification handler code here
 char Chat[500]="<?xml version=\"1.0\" encoding=\"GBK\"?><chat id=\"1814936736\" isAttach=\"0\"><sendtime>2011-10-17 19:01:23</sendtime><attach/><context><![CDATA[%3cP%3e%e4%bd%a0%e5%a5%bd%3c/P%3e]]></context></chat>";
 CString str;


 MSXML2::IXMLDOMDocumentPtr pDoc;  

 HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));  
 if(!SUCCEEDED(hr))  
 {   
  MessageBox("无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库!");
  return;
 }
 pDoc-> put_async(VARIANT_FALSE);
 pDoc-> put_validateOnParse(VARIANT_FALSE);
 pDoc-> put_resolveExternals(VARIANT_FALSE);
 pDoc-> put_preserveWhiteSpace(VARIANT_TRUE);
 pDoc-> loadXML((_bstr_t)Chat);   //加载文件
  
//  if(pDoc ==  NULL)
//  {
//   return;
//   }

// MSXML2::IXMLDOMNodeListPtr pNodeList = NULL;
  MSXML2::IXMLDOMNodePtr pNode = NULL;
 MSXML2::DOMNodeType nodeType;
 //取父节点 在树中查找名为Book的节点,"//"表示在任意一层查找
  pNode=pDoc->selectSingleNode("//context");
// pNodeList = pNode-> GetchildNodes();  //得到子节点
  
 //得到节点类型
 pNode->get_nodeType(&nodeType);
 
 //节点名称
 CString strName;
 strName=(char *)pNode->GetnodeName();
//  if(pNodeList == NULL)
//  {
//    return;
//  }

 _bstr_t strVisiPort=pNode->Gettext();
 str=MultiByteToWideChar(NULL,0,strVisiPort,-1,NULL,0);

 GetDlgItem(IDC_EDIT)->SetWindowText(str);
 
}