您的位置:首页 > 其它

windows mobile下保存xml

2010-05-13 22:24 169 查看
熟话说好记性不如烂笔头,老师说的,所以我决定在博客里开始记录我的学习笔记。这两天看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文档。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: