windows mobile下保存xml

本文介绍了如何在Windows Mobile环境中使用VC6.0创建并保存XML文档的具体步骤。包括设置属性、添加节点等内容,并解决了在该平台下遇到的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     熟话说好记性不如烂笔头,老师说的,所以我决定在博客里开始记录我的学习笔记。这两天看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文档。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值