Click here to Skip to main content
15,917,709 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
AnswerRe: file writing help Pin
vineeshV4-Jul-08 2:02
vineeshV4-Jul-08 2:02 
QuestionRe: file writing help Pin
David Crow4-Jul-08 11:40
David Crow4-Jul-08 11:40 
QuestionCannot open XML File Pin
manju#1234-Jul-08 0:36
manju#1234-Jul-08 0:36 
AnswerRe: Cannot open XML File Pin
KarstenK4-Jul-08 1:03
mveKarstenK4-Jul-08 1:03 
GeneralRe: Cannot open XML File Pin
manju#1234-Jul-08 2:17
manju#1234-Jul-08 2:17 
GeneralRe: Cannot open XML File Pin
manju#1234-Jul-08 2:52
manju#1234-Jul-08 2:52 
AnswerRepost Pin
SandipG 4-Jul-08 1:05
SandipG 4-Jul-08 1:05 
AnswerRe: Cannot open XML File [modified] Pin
mohit_108228-Dec-09 0:49
mohit_108228-Dec-09 0:49 
// Create a .h and .cpp file and create a new project include these file//
----------code for .h file---------------

#import <msxml.dll> named_guids

using namespace MSXML;

class CXMLEngine
{
public:
IXMLDOMDocumentPtr objDOMDoc;
BSTR mXML;
public:
CXMLEngine(){}
~CXMLEngine();
int CXMLEngine::Initialize(char *sFileName);
IXMLDOMNodePtr GetNode(BSTR sKey);
HRESULT DeleteNode(CString strName);
HRESULT SaveXML_To_File(char *filename);
HRESULT AddNodeKey(char *name,char *folderpath,char *moddate,char *ssd);
HRESULT ModifyKey(char *searchName,char *name,char *folderpath,char *moddate,char *ssd);

//HRESULT SetAttribute(IXMLDOMElement *oNode,char *sAttributeName, char *sAttributeValue);
void Refresh();
};
----------END code for .h fil------------

----------Code for .cpp file-------------

#include "stdafx.h"
#include "Xmltemp.h"

inline void EVAL_HR( HRESULT _hr )
{ if FAILED(_hr) throw(_hr); }


int CXMLEngine::Initialize(char *sFileName)
{
char searchPath[200];
try
{

EVAL_HR(CoInitialize(NULL));
//EVAL_HR(objDOMDoc.CreateInstance("Msxml2.DOMDocument.3.0"));
EVAL_HR(objDOMDoc.CreateInstance("microsoft.xmldom"));

GetCurrentDirectory(200, searchPath);
strcat(searchPath,"\\");
strcat(searchPath,sFileName);
_variant_t varXml(searchPath);
_variant_t varOut((bool)TRUE);
objDOMDoc->async = false;
varOut = objDOMDoc->load(sFileName); // (varXml);
mXML=objDOMDoc->xml;
if ((bool)varOut == FALSE)
throw(0);

return 0;
}

catch(...)
{
// AfxMessageBox("Exception occurred");
return -1;
}
CoUninitialize();
}

IXMLDOMNodePtr CXMLEngine::GetNode(BSTR sKey)
{
/*
Purpose:locate a specific node in the
xml structure by its "key" value
*/
CString sCriteria;
IXMLDOMNodePtr oNode;
sCriteria="Root/folders[@name $eq$ '";
sCriteria+=sKey;
sCriteria+= "']";

oNode=objDOMDoc->selectSingleNode(_bstr_t(sCriteria)); // (_bstr_t(sCriteria));
if (oNode!=NULL)
{
return(oNode);
}
else
{
AfxMessageBox("Node Not Found");
return(NULL);
}
}

HRESULT CXMLEngine::DeleteNode(CString strName)
{
IXMLDOMNodePtr urlsPtr = objDOMDoc->selectSingleNode(_T("Root")); // (_T("xml_api_reply"));
IXMLDOMNodeListPtr nodeListPtr = urlsPtr->selectNodes(_bstr_t("folders")); // (_bstr_t("weather"));
long item=nodeListPtr->Getlength();

for(int i=0;i<nodeListPtr->Getlength();i++)
{
_bstr_t tr1 =nodeListPtr-> item[i]->nodeName;
IXMLDOMNamedNodeMapPtr objAtrrValue= nodeListPtr-> item[i]->attributes;
VARIANT vFilePath, vFileName;

objAtrrValue->Getitem(0)->get_nodeValue(&vFileName);
CString strFileName = vFileName.bstrVal;

objAtrrValue->Getitem(1)->get_nodeValue(&vFilePath);
CString strFilePath = vFilePath.bstrVal;

if( strFileName == strName)
{
IXMLDOMNodePtr nodePtr= nodeListPtr->Getitem(i);
HRESULT hr =urlsPtr->removeChild(nodePtr); // remove node
}
}
objDOMDoc->save("foldre.xml"); // save file with this name

return(S_OK);
}

HRESULT CXMLEngine::AddNodeKey(char *name,char *folderpath,char *moddate,char *ssd)
{
IXMLDOMNodePtr urlsPtr = objDOMDoc->selectSingleNode(_T("Root")); // (_T("xml_api_reply"));
IXMLDOMNodeListPtr nodeListPtr = urlsPtr->selectNodes(_bstr_t("folders")); // (_bstr_t("weather"));

IXMLDOMElementPtr oElementNode=objDOMDoc->createElement("folders");
HRESULT hr=oElementNode->setAttribute(_bstr_t("name"),_bstr_t(name));
hr=oElementNode->setAttribute(_bstr_t("folderpath"),_bstr_t(folderpath));
hr=oElementNode->setAttribute(_bstr_t("moddate"),_bstr_t(moddate));
hr=oElementNode->setAttribute(_bstr_t("SSD"),_bstr_t(ssd));
urlsPtr->appendChild(oElementNode); // add node in file

objDOMDoc->save("foldre.xml"); // save file

return(S_OK);
}

HRESULT CXMLEngine::ModifyKey(char *searchName,char *name,char *folderpath,char *moddate,char *ssd)
{
IXMLDOMNodePtr urlsPtr = objDOMDoc->selectSingleNode(_T("Root")); // (_T("xml_api_reply"));
IXMLDOMNodeListPtr nodeListPtr = urlsPtr->selectNodes(_bstr_t("folders")); // (_bstr_t("weather"));
long item=nodeListPtr->Getlength();

for(int i=0;i<nodeListPtr->Getlength();i++)
{
IXMLDOMNamedNodeMapPtr objAtrrValue= nodeListPtr-> item[i]->attributes;
VARIANT vFilePath, vFileName;

objAtrrValue->Getitem(0)->get_nodeValue(&vFileName);
CString strFileName = vFileName.bstrVal;

objAtrrValue->Getitem(1)->get_nodeValue(&vFilePath);
CString strFilePath = vFilePath.bstrVal;

if( strFileName == searchName )
{
IXMLDOMNodePtr nodePtr= nodeListPtr->Getitem(i);
HRESULT hr;

IXMLDOMElementPtr oElementNode=objDOMDoc->createElement("folders");
hr=oElementNode->setAttribute(_bstr_t("name"),_bstr_t(name));
hr=oElementNode->setAttribute(_bstr_t("folderpath"),_bstr_t(folderpath));
hr=oElementNode->setAttribute(_bstr_t("moddate"),_bstr_t(moddate));
hr=oElementNode->setAttribute(_bstr_t("SSD"),_bstr_t(ssd));
urlsPtr->replaceChild(oElementNode,nodePtr);
}
}
objDOMDoc->save("foldre.xml");

return(S_OK);
}

----------End code for .cpp file---------

I hope this will solve the problem

modified on Monday, December 28, 2009 6:55 AM

QuestionCombo Box in and Progress Bar in CListCtrl Pin
sudhir_Kumar3-Jul-08 23:59
sudhir_Kumar3-Jul-08 23:59 
AnswerRe: Combo Box in and Progress Bar in CListCtrl Pin
Iain Clarke, Warrior Programmer4-Jul-08 0:13
Iain Clarke, Warrior Programmer4-Jul-08 0:13 
AnswerRe: Combo Box in and Progress Bar in CListCtrl Pin
Naveen4-Jul-08 0:17
Naveen4-Jul-08 0:17 
Questionblack tint everything on screen behind dialog box Pin
garyofcourse3-Jul-08 23:51
garyofcourse3-Jul-08 23:51 
AnswerRe: black tint everything on screen behind dialog box Pin
Naveen4-Jul-08 0:06
Naveen4-Jul-08 0:06 
Questioncombo box help Pin
projectip3-Jul-08 23:24
projectip3-Jul-08 23:24 
AnswerRe: combo box help Pin
toxcct3-Jul-08 23:32
toxcct3-Jul-08 23:32 
QuestionRe: combo box help Pin
CPallini3-Jul-08 23:35
mveCPallini3-Jul-08 23:35 
AnswerRe: combo box help Pin
Saurabh.Garg3-Jul-08 23:40
Saurabh.Garg3-Jul-08 23:40 
JokeRe: combo box help Pin
Rajesh R Subramanian4-Jul-08 0:38
professionalRajesh R Subramanian4-Jul-08 0:38 
GeneralRe: combo box help Pin
Saurabh.Garg4-Jul-08 2:55
Saurabh.Garg4-Jul-08 2:55 
AnswerRe: combo box help Pin
MANISH RASTOGI4-Jul-08 0:24
MANISH RASTOGI4-Jul-08 0:24 
AnswerRe: combo box help Pin
josip cagalj4-Jul-08 2:28
josip cagalj4-Jul-08 2:28 
QuestionShowing Main Wnd Pin
josip cagalj3-Jul-08 23:10
josip cagalj3-Jul-08 23:10 
AnswerRe: Showing Main Wnd Pin
Iain Clarke, Warrior Programmer3-Jul-08 23:27
Iain Clarke, Warrior Programmer3-Jul-08 23:27 
QuestionHow to make combobox as readonly Pin
KASR13-Jul-08 23:10
KASR13-Jul-08 23:10 
QuestionRe: How to make combobox as readonly Pin
Rajesh R Subramanian3-Jul-08 23:13
professionalRajesh R Subramanian3-Jul-08 23:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.