📄 xmldescribedata.cpp
字号:
#include "StdAfx.h"
#include ".\xmldescribedata.h"
#include <atlbase.h>
#include <atlconv.h>
#import "msxml3.dll"
using namespace MSXML2;
using namespace std;
const char DataFileName[]="DESCRIBE.xml";
CXMLDESCRIBDATA::CXMLDESCRIBDATA(void)
{
}
CXMLDESCRIBDATA::~CXMLDESCRIBDATA(void)
{
}
bool CXMLDESCRIBDATA::ReadData(void)//读取描述文件
{
MSXML2::IXMLDOMDocumentPtr pXMLDom;
MSXML2::IXMLDOMNodeListPtr pXMLDOMNodeList;
MSXML2::IXMLDOMNamedNodeMapPtr pXMLDOMNamedNodeMap;
HRESULT hr;
CoInitialize(NULL);//进入COM
hr = pXMLDom.CreateInstance(__uuidof(DOMDocument30));
if (FAILED(hr))
{
return false;
}
if ( pXMLDom->load(DataFileName) != VARIANT_TRUE)
{
return false;
}
pXMLDOMNodeList=pXMLDom->lastChild->childNodes;
int len=pXMLDOMNodeList->length;
for(int n=0;n<len-1;n++)
{
pXMLDOMNamedNodeMap=pXMLDOMNodeList->item[n]->attributes;//得到属性
//属性1
CW2AEX<100> X1((pXMLDOMNamedNodeMap->item[0]->nodeValue).bstrVal);
Vdescribe.push_back (X1.m_szBuffer );
//属性2
CW2AEX<400> X2((pXMLDOMNamedNodeMap->item[1]->nodeValue).bstrVal);
VFileName.push_back (X2.m_szBuffer );
//属性2
CW2AEX<100> X3((pXMLDOMNamedNodeMap->item[2]->nodeValue).bstrVal);
VSaveName.push_back (X3.m_szBuffer );
}
pXMLDOMNamedNodeMap=pXMLDOMNodeList->item[n]->attributes;//得到属性
CW2AEX<100> X1((pXMLDOMNamedNodeMap->item[0]->nodeValue).bstrVal);
DescrbeForUser=X1.m_szBuffer;
CW2AEX<100> X2((pXMLDOMNamedNodeMap->item[1]->nodeValue).bstrVal);
MailBoxName=X2.m_szBuffer;
CW2AEX<100> X3((pXMLDOMNamedNodeMap->item[2]->nodeValue).bstrVal);
DownLoadCode=X3.m_szBuffer;
pXMLDom.Release();
pXMLDOMNodeList.Release();
pXMLDOMNamedNodeMap.Release();
CoUninitialize();//离开COM
return true;
}
int CXMLDESCRIBDATA::XXFindFileName(const string name)
{
int num=-1;
for(int n=0;n<int(VFileName.size ());n++)
{
if(VFileName[n]==name)
{
num=n;
break;
}
}
return num;
}
bool CXMLDESCRIBDATA::WriteData(string SaveName)//写入描述文件
{
MSXML2::IXMLDOMDocumentPtr pXMLDom;
HRESULT hr;
CoInitialize(NULL);
hr= pXMLDom.CreateInstance(__uuidof(DOMDocument30));
if (FAILED(hr))
{
return false;
}
//开始准备写入的内容
int len = Vdescribe.size ();
string XMLContent;
XMLContent.append ("<?xml version=\"1.0\" encoding=\"GB2312\"?>");
XMLContent.append ("<root>");
for(int n=0;n<len;n++)
{
XMLContent.append ("<item discribe=\"");
XMLContent.append (Vdescribe[n]);
XMLContent.append ("\" FileName=\"");
XMLContent.append (VFileName[n]);
XMLContent.append ("\" SaveName=\"");
XMLContent.append (VSaveName[n]);
XMLContent.append ("\" />");
}
XMLContent.append ("<item discribe=\"");
XMLContent.append (DescrbeForUser);
XMLContent.append ("\" MailBoxName=\"");
XMLContent.append (MailBoxName);
XMLContent.append ("\" DownLoadCode=\"");
XMLContent.append (DownLoadCode);
XMLContent.append ("\" />");
XMLContent.append ("</root>");
if(pXMLDom->loadXML(
XMLContent.c_str ())!=VARIANT_TRUE)
{
return false;
}
hr = pXMLDom->save(SaveName.c_str ());//最关键的一句话
pXMLDom.Release();
CoUninitialize();
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -