⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xmldescribedata.cpp

📁 BQYAHOO的Visual C++源代码
💻 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 + -