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

📄 docmanage.cpp

📁 文档生成工具 XML例子
💻 CPP
📖 第 1 页 / 共 3 页
字号:
 	IXMLDOMNodePtr pXmlNode;
 	IXMLDOMNodePtr pXmlChildNode;
 	IXMLDOMNodeListPtr pXmlNodeList;
 	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;
 
 	try
 	{	
 		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
 		if(FAILED(hr))
 		{
 			MessageBox(0,"error!",0,0);
 		}
 		else
 		{
 			pXmlDoc->load(_bstr_t(pszFilePath));
 			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys/property[@ID='" + strID + "']" ));
 			pXmlNode = pXmlNodeList->nextNode();
 			if(pXmlNode != NULL)
 			{
 				pXmlNodeMap = pXmlNode->Getattributes();
 				pXmlChildNode = pXmlNodeMap->getNamedItem(_bstr_t("visit"));
 				propertyMap->SetAt("visit", W2A(pXmlChildNode->Gettext()));
 				
				pXmlNodeList = pXmlNode->GetchildNodes();
				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->SetAt("pdeclare", W2A(pXmlChildNode->Gettext()));
 				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->SetAt("ptypedesc", W2A(pXmlChildNode->Gettext()));
				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->SetAt("pexample", W2A(pXmlChildNode->Gettext()));
				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->SetAt("premark", W2A(pXmlChildNode->Gettext()));
			}
 		}
 	}
 	catch(_com_error& e)
 	{
 		MessageBox(0, W2A(e.Description()),0,0);
 	}
	return propertyMap;
}

BOOL CDocManage::ModifyFunctionInfo(CMapStringToString *functionMap, CString strClassName, CString strID)
{
	USES_CONVERSION;
 	HRESULT hr = NULL;
	BOOL breturn;
	char pszFilePath[160];
 	memset(pszFilePath, 0, sizeof(pszFilePath));
 	sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
 	
 	IXMLDOMDocumentPtr pXmlDoc;
 	IXMLDOMNodePtr pXmlNode;
 	IXMLDOMNodePtr pXmlChildNode;
 	IXMLDOMNodeListPtr pXmlNodeList;
 	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;
 
 	try
 	{	
 		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
 		if(FAILED(hr))
 		{
 			MessageBox(0,"error!",0,0);
			breturn = false;
 		}
 		else
 		{
 			pXmlDoc->load(_bstr_t(pszFilePath));
 			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Functions/function[@ID='" + strID + "']" ));
 			pXmlNode = pXmlNodeList->nextNode();
 			if(pXmlNode != NULL)
 			{	
				CString strTemp;
				pXmlNodeList = pXmlNode->GetchildNodes();
				pXmlChildNode = pXmlNodeList->nextNode();
 				
				pXmlChildNode = pXmlNodeList->nextNode();
				functionMap->Lookup("freturndesc", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));
				
				pXmlChildNode = pXmlNodeList->nextNode();
				functionMap->Lookup("fparamdesc", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));

				pXmlChildNode = pXmlNodeList->nextNode();
				functionMap->Lookup("fexample", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));

				pXmlChildNode = pXmlNodeList->nextNode();
				functionMap->Lookup("fremark", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));
			}
			pXmlDoc->save(_bstr_t(pszFilePath));
 		}
 	}
 	catch(_com_error& e)
 	{
 		MessageBox(0, W2A(e.Description()),0,0);
		breturn = false;
 	}
 	
	return breturn;
}

BOOL CDocManage::ModifyPropertyInfo(CMapStringToString *propertyMap, CString strClassName, CString strID)
{
	USES_CONVERSION;
 	HRESULT hr = NULL;
	BOOL breturn = true;
	char pszFilePath[160];
 	memset(pszFilePath, 0, sizeof(pszFilePath));
 	sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
	
 	IXMLDOMDocumentPtr pXmlDoc;
 	IXMLDOMNodePtr pXmlNode;
 	IXMLDOMNodePtr pXmlChildNode;
 	IXMLDOMNodeListPtr pXmlNodeList;
 	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;
 
 	try
 	{	
 		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
 		if(FAILED(hr))
 		{
 			MessageBox(0,"error!",0,0);
			breturn = false;
 		}
 		else
 		{
			
 			pXmlDoc->load(_bstr_t(pszFilePath));
 			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys/property[@ID='" + strID + "']" ));
 			pXmlNode = pXmlNodeList->nextNode();
 			if(pXmlNode != NULL)
 			{
 				CString strTemp;
				pXmlNodeList = pXmlNode->GetchildNodes();
				pXmlChildNode = pXmlNodeList->nextNode();
 				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->Lookup("ptypedesc", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));
				
				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->Lookup("pexample", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));
				
				pXmlChildNode = pXmlNodeList->nextNode();
				propertyMap->Lookup("premark", strTemp);
				pXmlChildNode->Puttext(_bstr_t(strTemp));
			}
			pXmlDoc->save(_bstr_t(pszFilePath));
 		}
 	}
 	catch(_com_error& e)
 	{
 		MessageBox(0, W2A(e.Description()),0,0);
		breturn = false;
 	}
 	
	return breturn;
}

BOOL CDocManage::AddFunction(CString strClassName, CString strFunctionDeclare, CString strFunctionName, CString strVisit)
{
	USES_CONVERSION;
 	HRESULT hr = NULL;
	BOOL breturn = true;
	char pszFilePath[160];
 	memset(pszFilePath, 0, sizeof(pszFilePath));
 	sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
 	
 	IXMLDOMDocumentPtr pXmlDoc;
 	IXMLDOMNodePtr pXmlNode;
 	IXMLDOMNodePtr pXmlChildNode;
 	IXMLDOMNodeListPtr pXmlNodeList;
 	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;
 
 	try
 	{	
 		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
 		if(FAILED(hr))
 		{
 			MessageBox(0,"error!",0,0);
			breturn = false;
 		}
 		else
 		{
			
 			pXmlDoc->load(_bstr_t(pszFilePath));
 			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Functions"));
 			pXmlNode = pXmlNodeList->nextNode();
 			if(pXmlNode != NULL)
 			{
				IXMLDOMElementPtr pXmlElem = pXmlDoc->createElement(_bstr_t("function"));
				pXmlNode->appendChild(pXmlElem);
				pXmlElem->setAttribute(_bstr_t("name"), _bstr_t(strFunctionName));
				pXmlElem->setAttribute(_bstr_t("visit"), _bstr_t(strVisit));
			
				pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Functions/function"));
				long length = pXmlNodeList->Getlength();
				pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys/property"));
				length += pXmlNodeList->Getlength();

				CString strID;
				strID.Format("%d", length);
				pXmlElem->setAttribute(_bstr_t("ID"), _bstr_t(strID));

				IXMLDOMElementPtr pXmlElemDeclare = pXmlDoc->createElement(_bstr_t("fdeclare"));
				pXmlElemDeclare->Puttext(_bstr_t(strFunctionDeclare));
				pXmlElem->appendChild(pXmlElemDeclare);
			
				IXMLDOMElementPtr pXmlElemReturn = pXmlDoc->createElement(_bstr_t("freturndesc"));
				pXmlElem->appendChild(pXmlElemReturn);
				IXMLDOMElementPtr pXmlElemParam = pXmlDoc->createElement(_bstr_t("fparamdesc"));
				pXmlElem->appendChild(pXmlElemParam);
				IXMLDOMElementPtr pXmlElemExample = pXmlDoc->createElement(_bstr_t("fexample"));
				pXmlElem->appendChild(pXmlElemExample);
				IXMLDOMElementPtr pXmlElemRemark = pXmlDoc->createElement(_bstr_t("fremark"));
				pXmlElem->appendChild(pXmlElemRemark);
				
			}
			pXmlDoc->save(_bstr_t(pszFilePath));
 		}
 	}
 	catch(_com_error& e)
 	{
 		MessageBox(0, W2A(e.Description()),0,0);
		breturn = false;
 	}
 	
	return breturn;
}

BOOL CDocManage::AddProperty(CString strClassName, CString strPropertyType, CString strPropertyName, CString strVisit)
{
	USES_CONVERSION;
 	HRESULT hr = NULL;
	BOOL breturn = true;
	char pszFilePath[160];
 	memset(pszFilePath, 0, sizeof(pszFilePath));
 	sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
 	
 	IXMLDOMDocumentPtr pXmlDoc;
 	IXMLDOMNodePtr pXmlNode;
 	IXMLDOMNodePtr pXmlChildNode;
 	IXMLDOMNodeListPtr pXmlNodeList;
 	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;
 
 	try
 	{	
 		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
 		if(FAILED(hr))
 		{
 			MessageBox(0,"error!",0,0);
			breturn = false;
 		}
 		else
 		{
			
 			pXmlDoc->load(_bstr_t(pszFilePath));
 			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys"));
 			pXmlNode = pXmlNodeList->nextNode();
 			if(pXmlNode != NULL)
 			{
				IXMLDOMElementPtr pXmlElem = pXmlDoc->createElement(_bstr_t("property"));
				pXmlNode->appendChild(pXmlElem);
				pXmlElem->setAttribute(_bstr_t("name"), _bstr_t(strPropertyName));
				pXmlElem->setAttribute(_bstr_t("visit"), _bstr_t(strVisit));
			
				pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Functions/function"));
				long length = pXmlNodeList->Getlength();
				pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Propertys/property"));
				length += pXmlNodeList->Getlength();

				CString strID;
				strID.Format("%d", length);
				pXmlElem->setAttribute(_bstr_t("ID"), _bstr_t(strID));

				IXMLDOMElementPtr pXmlElemDeclare = pXmlDoc->createElement(_bstr_t("fdeclare"));
				pXmlElemDeclare->Puttext(_bstr_t(strPropertyType + " " + strPropertyName));
				pXmlElem->appendChild(pXmlElemDeclare);
			
				IXMLDOMElementPtr pXmlElemReturn = pXmlDoc->createElement(_bstr_t("ptypedesc"));
				pXmlElem->appendChild(pXmlElemReturn);
				IXMLDOMElementPtr pXmlElemExample = pXmlDoc->createElement(_bstr_t("fexample"));
				pXmlElem->appendChild(pXmlElemExample);
				IXMLDOMElementPtr pXmlElemRemark = pXmlDoc->createElement(_bstr_t("fremark"));
				pXmlElem->appendChild(pXmlElemRemark);
				
			}
			pXmlDoc->save(_bstr_t(pszFilePath));
 		}
 	}
 	catch(_com_error& e)
 	{
 		MessageBox(0, W2A(e.Description()),0,0);
		breturn = false;
 	}
 	
	return breturn;
}

BOOL CDocManage::BringDoc(CString strClassName, BOOL bPublic, BOOL bProtected, BOOL bPrivate, BOOL bFunction, BOOL bProperty)
{
	USES_CONVERSION;
 	HRESULT hr = NULL;
	FILE *pDocFile = fopen(theApp.m_strPrintPath, "w");
	BOOL breturn = true;
	char pszFilePath[160];
 	memset(pszFilePath, 0, sizeof(pszFilePath));
 	sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
	CString strLine;

 	IXMLDOMDocumentPtr pXmlDoc;
 	IXMLDOMNodePtr pXmlNode;
 	IXMLDOMNodePtr pXmlChildNode;
 	IXMLDOMNodeListPtr pXmlNodeList;
 	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;
 
 	try
 	{	
 		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
 		if(FAILED(hr))
 		{
 			MessageBox(0,"error!",0,0);
			breturn = false;
 		}
 		else
 		{
			fputs("_________________________________________________________________________________________________________\n", pDocFile);		   
 			pXmlDoc->load(_bstr_t(pszFilePath));
 			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/name"));
 			pXmlNode = pXmlNodeList->nextNode();
			strLine.Format("%s:   %s\n", CLASSNAME, W2A(pXmlNode->Gettext()));
			fputs(strLine, pDocFile);

			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/declare"));
 			pXmlNode = pXmlNodeList->nextNode();
 			strLine.Format("%s:   %s\n", CLASSDECLARE, W2A(pXmlNode->Gettext()));
			fputs(strLine, pDocFile);
			
			strLine.Format("%s:\n", DESC);
			fputs(strLine, pDocFile);
			
			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/classdesc"));
 			pXmlNode = pXmlNodeList->nextNode();
			strLine.Format("%s", W2A(pXmlNode->Gettext()));
			char* pszData = new char[2048];
			memset(pszData, 0, sizeof(pszData));
			sprintf(pszData, "%s", strLine);
			FormatData(pszData, 1);
			fputs(pszData, pDocFile);

			fputs("\n_________________________________________________________________________________________________________\n", pDocFile);
 		}
 	}
 	catch(_com_error& e)
 	{
 		MessageBox(0, W2A(e.Description()),0,0);
		breturn = false;
 	}
 	
	
	if((bPrivate)&&(bProperty))
	{
		PutPropertyInfo(pDocFile, strClassName, PRIVATEPROPERTY);
	}
	if((bPrivate)&&(bFunction))
	{
		PutFunctionInfo(pDocFile, strClassName, PRIVATEFUNCTION);
	}

	if((bProtected)&&(bProperty))
	{
		PutPropertyInfo(pDocFile, strClassName, PROTECTEDPROPERTY);
	}
	if((bProtected)&&(bFunction))
	{
		PutFunctionInfo(pDocFile, strClassName, PROTECTEDFUNCTION);
	}

	if((bPublic)&&(bProperty))
	{
		PutPropertyInfo(pDocFile, strClassName, PUBLICPROPERTY);
	}
	if((bPublic)&&(bFunction))
	{
		PutFunctionInfo(pDocFile, strClassName, PUBLICFUNCTION);
	}

	////////////////////////////////////////////////////////////////
	if((bPrivate)&&(bProperty))
	{
		PutPropertyAllInfo(pDocFile, strClassName, PRIVATEPROPERTY);
	}
	if((bPrivate)&&(bFunction))
	{
		PutFunctionAllInfo(pDocFile, strClassName, PRIVATEFUNCTION);
	}

	if((bProtected)&&(bProperty))
	{
		PutPropertyAllInfo(pDocFile, strClassName, PROTECTEDPROPERTY);
	}
	if((bProtected)&&(bFunction))
	{
		PutFunctionAllInfo(pDocFile, strClassName, PROTECTEDFUNCTION);
	}

	if((bPublic)&&(bProperty))
	{
		PutPropertyAllInfo(pDocFile, strClassName, PUBLICPROPERTY);
	}
	if((bPublic)&&(bFunction))
	{
		PutFunctionAllInfo(pDocFile, strClassName, PUBLICFUNCTION);
	}
	fclose(pDocFile);
	return true;
}

BOOL CDocManage::PutFunctionInfo(FILE *pDocFile, CString strClassName, CString strVisit)
{
	USES_CONVERSION;
 	HRESULT hr = NULL;
	CString strLine;
	char pszFilePath[160];
	memset(pszFilePath, 0, sizeof(pszFilePath));
	sprintf(pszFilePath,"%s\\%s%s", theApp.m_strLocPath, strClassName, FILEEXT);
	strLine.Format("%s: \n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n", strVisit);	
	fputs(strLine, pDocFile);

	IXMLDOMDocumentPtr pXmlDoc;
	IXMLDOMNodePtr pXmlNode;
	IXMLDOMNodePtr pXmlChildNode;
	IXMLDOMNodeListPtr pXmlNodeList;
	IXMLDOMNamedNodeMapPtr  pXmlNodeMap;

	try
	{	
		hr = pXmlDoc.CreateInstance(__uuidof(DOMDocument));
		if(FAILED(hr))
		{
			MessageBox(0,"error!",0,0);
		}
		else
		{
			pXmlDoc->load(_bstr_t(pszFilePath));
			pXmlNodeList = pXmlDoc->selectNodes(_bstr_t("Classes/class/Functions/function[@visit='" + strVisit + "']" ));
			pXmlNode = pXmlNodeList->nextNode();
			
			while(pXmlNode != NULL)
			{
				pXmlNodeMap = pXmlNode->Getattributes();
				pXmlChildNode = pXmlNodeMap->getNamedItem(_bstr_t("name"));
				strLine.Format("%s\n", W2A(pXmlChildNode->Gettext()));
				fputs(strLine, pDocFile);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -