windows mobile下保存xml

     熟话说好记性不如烂笔头,老师说的,所以我决定在博客里开始记录我的学习笔记。这两天看xml的东西比较多,很多文章都说xml是未来编程的方向。目前来说我还是没有深刻领会到这句话,我对xml的理解和使用并没有超过txt。还是慢慢来吧,哈哈

先贴保存一个xml文档的例子代码。

1.建一个对话框,对话框内有三个编辑框,ID分别为IDC_NAME,IDC_AGE,IDC_SEX,建立变量关联,分别是m_name,m_age,m_sex.

2.对话框内增加一个“保存”按钮,按钮响应代码如下:

/////VC6.0的代码

包含头文件:

#include "msxml.h"
#import "msxml.dll"

 

 UpdateData();

 AfxEnableControlContainer();
    ::AfxOleInit();
    ::CoInitialize(NULL);

 MSXML::IXMLDOMDocumentPtr pDoc;
 MSXML::IXMLDOMElementPtr xmlRoot;
 MSXML::IXMLDOMNodePtr xmlNode;

 HRESULT hr = pDoc.CreateInstance(_uuidof(MSXML::DOMDocument));
 if(!SUCCEEDED(hr))
 {
  AfxMessageBox("无法创建DM对象!");
  return;
 }
 
 xmlRoot = pDoc->createElement("information");
    xmlRoot->setAttribute("id","NO.1");     //设置属性
 pDoc->appendChild(xmlRoot);
 
 xmlNode = pDoc->createElement("name");    //增加节点,下同。
 xmlNode->Puttext(_bstr_t(m_name));
 xmlRoot->appendChild(xmlNode);
 
 xmlNode = pDoc->createElement("age");
 xmlNode->Puttext(_bstr_t(m_age));
 xmlRoot->appendChild(xmlNode);

 xmlNode = pDoc->createElement("sex");
 xmlNode->Puttext(_bstr_t(m_sex));
 xmlRoot->appendChild(xmlNode);
 
 pDoc->save("test.xml");

 MessageBox("保存成功。");
 UpdateData(false);
}

 

但是这段代码在windows mobile 环境下并不完全适用。拷过去的代码出现两个问题:

1、   ::CoInitialize(NULL);出错。经校正改为

      ::CoInitializeEx(NULL,0);

2、保存失败。在胡老师的指点之下进行了调试,出错语句为

   pDoc->save("test.xml");

  老师说出错原因为要给出具体的路径。我尝试了直接写入路径,似乎不行。所以干脆把老师的代码拷过来用,结果成功通过并保存成功。代码如下:

 VARIANT vValue;
 vValue.vt = VT_BSTR;

  CString strtime;
 SYSTEMTIME systime;
 GetLocalTime(&systime);
 strtime.Format(_T("%4d%2d%2d%2d%2d%2d"),systime.wYear,systime.wMonth,systime.wDay,systime.wHour,systime.wMinute,systime.wSecond);
 strtime.Append (_T(".xml"));

 strtime = GetModulePath() + strtime;

 vValue.bstrVal = strtime.AllocSysString ();
 hr = pDoc->save(vValue);

//获得路径函数

CString CInfo::GetModulePath(void)
{
 char szPath[256];
 char szResult[256];
 CString strPath =_T("");

 GetModuleFileName(NULL,(LPWSTR)szPath,sizeof(szPath)/sizeof(TCHAR));//当前正在执行的文件的路径

 strPath.Format (_T("%s"),szPath);

 //wchar_t wstr[] = L"//";
 int nIndex = strPath.ReverseFind('//');
 strPath = strPath.Left(nIndex + 1);

 return strPath;
}
这样就可以在windows mobile下创建并保存了一个xml文档。

 

你可能感兴趣的:(windows mobile下保存xml)