高手救命,十万火急,IXMLDOMDocument::appendchild报access violation错误
我刚学XMLDOM编程,写了个范例程序,就碰到了问题,怎么都解决不了,上来求救,请高手出手帮忙!
// ListDirToXML.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#import "msxml3.dll" named_guids
using namespace std;
using namespace MSXML2;
int main(int argc, char* argv[])
{
MSXML2::IXMLDOMDocument *pXMLDomDoc=NULL;
HRESULT hr;
CoInitialize(NULL);
hr=CoCreateInstance(
__uuidof(DOMDocument30),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IXMLDOMDocument),
(void**)&pXMLDomDoc);
if(FAILED(hr))
{
cout<<"CoCreateInstance Failed"<<endl;
CoUninitialize();
return 0;
}
pXMLDomDoc->put_async(VARIANT_FALSE);
pXMLDomDoc->preserveWhiteSpace=VARIANT_TRUE;
pXMLDomDoc->loadXML(_T("<root></root>"));
MSXML2::IXMLDOMElement *pXmlRoot=NULL;
pXmlRoot=pXMLDomDoc->GetdocumentElement();
MSXML2::IXMLDOMElement *pXmlA=NULL;
pXmlA=pXMLDomDoc->createElement(_T("A"));
pXmlRoot->appendChild(pXmlA);//就是这个语句报错,我怎么也看不出来哪里违规了!顺便说一句,我用的是古老的VC6.0。
pXMLDomDoc->save(_T("test.xml"));
CoUninitialize();
return 0;
}
[解决办法]
MSXML2::IXMLDOMElement *pXmlRoot=NULL;
pXmlRoot=pXMLDomDoc->GetdocumentElement();
你这个把智能指针赋值给了普通指针,改为
MSXML2::IXMLDOMElementPtr pXmlRoot=NULL;
pXmlRoot=pXMLDomDoc->GetdocumentElement();