tinyxml在wince下的用法
2010-08-10 11:29
211 查看
1.//包含XML解析类文件头
#include "tinyxml.h"
2.定义变量
TiXmlDocument * m_pXml;
bool m_bLoadXml;
3.读函数
BOOL CAlarmDlg::ReadCFGFile()
{
m_pXml=new TiXmlDocument();
BOOL flag=FALSE;
#ifdef MIPS
m_bLoadXml=m_pXml->LoadFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#else
m_bLoadXml=m_pXml->LoadFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#endif
CString temp1,temp2,temp3;
if(m_bLoadXml)
{
TiXmlElement* rootElement = m_pXml->RootElement(); //<Alarm>
TiXmlElement* alarmElement = rootElement->FirstChildElement(); //<ALARM>
alarmElement=alarmElement->FirstChildElement();//子一级<ALARM>
//获取服务器地址
while(alarmElement)
{
//继续轮询下一个<ALARM>
m_szaAlarmTime.Add(alarmElement->GetText());
alarmElement=alarmElement->NextSiblingElement();
}
flag=TRUE;
}
//回收内存
if(m_pXml!=NULL)
{
delete m_pXml;
m_pXml=NULL;
}
return flag;
}
4.写函数
BOOL CSetTimeDlg::WriteCFGFile()
{
m_pXml=new TiXmlDocument();
BOOL flag=FALSE;
#ifdef MIPS
m_bLoadXml=m_pXml->LoadFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
result&=~FILE_ATTRIBUTE_READONLY;
SetFileAttributes(sz_xmlfilename,result);
#else
m_bLoadXml=m_pXml->LoadFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
result&=~FILE_ATTRIBUTE_READONLY;
SetFileAttributes(sz_xmlfilename,result);
#endif
CString temp1,temp2,temp3;
int count;
if(m_bLoadXml)
{
TiXmlElement* rootElement = m_pXml->RootElement(); //<MAIN>
TiXmlElement* alarmElement = rootElement->FirstChildElement(); //<ALARM>
alarmElement=alarmElement->FirstChildElement();//子一级<ALARM>
count=0;
//获取服务器地址
if(m_balarmcountisadd==FALSE)
{
while(alarmElement)
{
//继续轮询下一个<ALARM>
if(count<m_ialrmtimeindex)
{
count+=1;
alarmElement=alarmElement->NextSiblingElement();
}
else
{
int m_count=0;
alarmElement->Clear();
CString temp;
//小时
m_count=_wtoi(m_szhour);
if(m_count<10)
m_szhour.Format(L"0%d",m_count);
else
m_szhour.Format(L"%d",m_count);
temp=m_szhour;
//冒号
temp+=L":";
//分钟
m_count=_wtoi(m_szminute);
if(m_count<10)
m_szminute.Format(L"0%d",m_count);
else
m_szminute.Format(L"%d",m_count);
temp+=m_szminute;
//Unicode转为ASCIIm码
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,NULL,0,NULL,FALSE);
temp.ReleaseBuffer();
char *psText;
psText = new char[dwNum];
WideCharToMultiByte (CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,psText,dwNum,NULL,FALSE);
temp.ReleaseBuffer();
TiXmlText *pValue = new TiXmlText(psText);
alarmElement->LinkEndChild(pValue);
delete []psText;
#ifdef MIPS
m_pXml->SaveFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#else
m_pXml->SaveFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#endif
flag=TRUE;
break;
}
}
}
else
{
//while(alarmElement)
TiXmlElement* rootElement = m_pXml->RootElement(); //<MAIN>
TiXmlElement* alarmElement = rootElement->FirstChildElement(); //<ALARM>
int m_count=0;
CString temp;
//小时
m_count=_wtoi(m_szhour);
if(m_count<10)
m_szhour.Format(L"0%d",m_count);
else
m_szhour.Format(L"%d",m_count);
temp=m_szhour;
//冒号
temp+=L":";
//分钟
m_count=_wtoi(m_szminute);
if(m_count<10)
m_szminute.Format(L"0%d",m_count);
else
m_szminute.Format(L"%d",m_count);
temp+=m_szminute;
//Unicode转为ASCIIm码
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,NULL,0,NULL,FALSE);
temp.ReleaseBuffer();
char *psText;
psText = new char[dwNum];
WideCharToMultiByte (CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,psText,dwNum,NULL,FALSE);
temp.ReleaseBuffer();
TiXmlElement* alarm = new TiXmlElement("ALARM");
TiXmlText *pValue = new TiXmlText(psText);
alarm->LinkEndChild(pValue);
alarmElement->LinkEndChild(alarm);
delete []psText;
#ifdef MIPS
m_pXml->SaveFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#else
m_pXml->SaveFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#endif
flag=TRUE;
}
}
//回收内存
if(m_pXml!=NULL)
{
delete m_pXml;
m_pXml=NULL;
}
return flag;
}
5.xml文件类似于
<ALARM>
<ALARM>
<ALARM>14:36</ALARM>
<ALARM>09:06</ALARM>
<ALARM>22:00</ALARM>
<ALARM>05:00</ALARM>
<ALARM>09:00</ALARM>
</ALARM>
</ALARM>
#include "tinyxml.h"
2.定义变量
TiXmlDocument * m_pXml;
bool m_bLoadXml;
3.读函数
BOOL CAlarmDlg::ReadCFGFile()
{
m_pXml=new TiXmlDocument();
BOOL flag=FALSE;
#ifdef MIPS
m_bLoadXml=m_pXml->LoadFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#else
m_bLoadXml=m_pXml->LoadFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#endif
CString temp1,temp2,temp3;
if(m_bLoadXml)
{
TiXmlElement* rootElement = m_pXml->RootElement(); //<Alarm>
TiXmlElement* alarmElement = rootElement->FirstChildElement(); //<ALARM>
alarmElement=alarmElement->FirstChildElement();//子一级<ALARM>
//获取服务器地址
while(alarmElement)
{
//继续轮询下一个<ALARM>
m_szaAlarmTime.Add(alarmElement->GetText());
alarmElement=alarmElement->NextSiblingElement();
}
flag=TRUE;
}
//回收内存
if(m_pXml!=NULL)
{
delete m_pXml;
m_pXml=NULL;
}
return flag;
}
4.写函数
BOOL CSetTimeDlg::WriteCFGFile()
{
m_pXml=new TiXmlDocument();
BOOL flag=FALSE;
#ifdef MIPS
m_bLoadXml=m_pXml->LoadFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
result&=~FILE_ATTRIBUTE_READONLY;
SetFileAttributes(sz_xmlfilename,result);
#else
m_bLoadXml=m_pXml->LoadFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
result&=~FILE_ATTRIBUTE_READONLY;
SetFileAttributes(sz_xmlfilename,result);
#endif
CString temp1,temp2,temp3;
int count;
if(m_bLoadXml)
{
TiXmlElement* rootElement = m_pXml->RootElement(); //<MAIN>
TiXmlElement* alarmElement = rootElement->FirstChildElement(); //<ALARM>
alarmElement=alarmElement->FirstChildElement();//子一级<ALARM>
count=0;
//获取服务器地址
if(m_balarmcountisadd==FALSE)
{
while(alarmElement)
{
//继续轮询下一个<ALARM>
if(count<m_ialrmtimeindex)
{
count+=1;
alarmElement=alarmElement->NextSiblingElement();
}
else
{
int m_count=0;
alarmElement->Clear();
CString temp;
//小时
m_count=_wtoi(m_szhour);
if(m_count<10)
m_szhour.Format(L"0%d",m_count);
else
m_szhour.Format(L"%d",m_count);
temp=m_szhour;
//冒号
temp+=L":";
//分钟
m_count=_wtoi(m_szminute);
if(m_count<10)
m_szminute.Format(L"0%d",m_count);
else
m_szminute.Format(L"%d",m_count);
temp+=m_szminute;
//Unicode转为ASCIIm码
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,NULL,0,NULL,FALSE);
temp.ReleaseBuffer();
char *psText;
psText = new char[dwNum];
WideCharToMultiByte (CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,psText,dwNum,NULL,FALSE);
temp.ReleaseBuffer();
TiXmlText *pValue = new TiXmlText(psText);
alarmElement->LinkEndChild(pValue);
delete []psText;
#ifdef MIPS
m_pXml->SaveFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#else
m_pXml->SaveFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#endif
flag=TRUE;
break;
}
}
}
else
{
//while(alarmElement)
TiXmlElement* rootElement = m_pXml->RootElement(); //<MAIN>
TiXmlElement* alarmElement = rootElement->FirstChildElement(); //<ALARM>
int m_count=0;
CString temp;
//小时
m_count=_wtoi(m_szhour);
if(m_count<10)
m_szhour.Format(L"0%d",m_count);
else
m_szhour.Format(L"%d",m_count);
temp=m_szhour;
//冒号
temp+=L":";
//分钟
m_count=_wtoi(m_szminute);
if(m_count<10)
m_szminute.Format(L"0%d",m_count);
else
m_szminute.Format(L"%d",m_count);
temp+=m_szminute;
//Unicode转为ASCIIm码
DWORD dwNum = WideCharToMultiByte(CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,NULL,0,NULL,FALSE);
temp.ReleaseBuffer();
char *psText;
psText = new char[dwNum];
WideCharToMultiByte (CP_OEMCP,NULL,temp.GetBuffer(temp.GetLength()),-1,psText,dwNum,NULL,FALSE);
temp.ReleaseBuffer();
TiXmlElement* alarm = new TiXmlElement("ALARM");
TiXmlText *pValue = new TiXmlText(psText);
alarm->LinkEndChild(pValue);
alarmElement->LinkEndChild(alarm);
delete []psText;
#ifdef MIPS
m_pXml->SaveFile("//Hive//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Hive//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#else
m_pXml->SaveFile("//Storage Card//configfiles//Alarm//Alarm.xml");
CString sz_xmlfilename=L"//Storage Card//configfiles//Alarm//Alarm.xml";
DWORD result=GetFileAttributes(sz_xmlfilename);
SetFileAttributes(sz_xmlfilename,result|FILE_ATTRIBUTE_READONLY);
#endif
flag=TRUE;
}
}
//回收内存
if(m_pXml!=NULL)
{
delete m_pXml;
m_pXml=NULL;
}
return flag;
}
5.xml文件类似于
<ALARM>
<ALARM>
<ALARM>14:36</ALARM>
<ALARM>09:06</ALARM>
<ALARM>22:00</ALARM>
<ALARM>05:00</ALARM>
<ALARM>09:00</ALARM>
</ALARM>
</ALARM>
相关文章推荐
- tinyxml在wince下的用法
- wince中的hook(钩子)用法
- wince -- 线程中SetEvent及WaitForSingleObject用法
- wince用法点滴(1)-剪切板[转贴]
- wince用法点滴(2)-字符输入问题
- wince中的hook(钩子)用法
- tinyxml用法学习
- TinyXML类库和对象模型 以及简单的TinyXML的简单用法。
- wince中的hook(钩子)用法
- WINCE注册表编程介绍用法
- WinCE下错误报告的用法
- WinCE下消息队列用法MsgQueue
- WinCE和Windows Mobile下使用TinyXML进行C++的开发
- Windows Mobile和Wince下使用TinyXML进行Native C++的开发
- wince中的hook(钩子)用法
- wince中的hook(钩子)用法
- [转]WinCE下消息队列用法
- WinCE下消息队列用法
- TinyXML 用法举例 -- 读取XML,生成XML,修改删除XML
- winCE 使用tinyxml