C++ 用msxml解析xml的有关问题
C++ 用msxml解析xml的问题
#include "stdafx.h"
#include <iostream>
using namespace std;
#import <msxml6.dll>
using namespace MSXML2;
int ReadXMLFile()
{
CoInitialize(NULL);
char *xmlFile = "student.xml";
MSXML2::IXMLDOMDocumentPtr pdoc = NULL;
MSXML2::IXMLDOMNodeListPtr pnodeList = NULL;
MSXML2::IXMLDOMElementPtr prootElement = NULL;
MSXML2::IXMLDOMNodePtr pnode = NULL;
MSXML2::IXMLDOMNamedNodeMapPtr pattrList = NULL;
MSXML2::IXMLDOMAttributePtr pattrNode = NULL;
HRESULT hr = pdoc.CreateInstance(__uuidof(DOMDocument60));
if(FAILED(hr))
{
printf("无法创建DOMDocument60对象!");
return EXIT_FAILURE;
}
VARIANT_BOOL xmlLoad = pdoc->load((_variant_t)xmlFile);
//加载失败
if(!xmlLoad)
{
printf("加载%s失败!\n", xmlFile);
return EXIT_FAILURE;
}
prootElement = pdoc->GetdocumentElement();
cout<< (char*)prootElement->GetnodeName() <<endl;
CoUninitialize();
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
ReadXMLFile();
getchar();
return 0;
}
代码如上,就是普通的xml解析代码,运行时会有内存错误:某处有未处理的异常,读取位置发生访问冲突。(能正确输出)
请问,怎么解决?
------解决方案--------------------
调试跟踪一下异常的位置,一般是空指针或对象没有获取到
#include "stdafx.h"
#include <iostream>
using namespace std;
#import <msxml6.dll>
using namespace MSXML2;
int ReadXMLFile()
{
CoInitialize(NULL);
char *xmlFile = "student.xml";
MSXML2::IXMLDOMDocumentPtr pdoc = NULL;
MSXML2::IXMLDOMNodeListPtr pnodeList = NULL;
MSXML2::IXMLDOMElementPtr prootElement = NULL;
MSXML2::IXMLDOMNodePtr pnode = NULL;
MSXML2::IXMLDOMNamedNodeMapPtr pattrList = NULL;
MSXML2::IXMLDOMAttributePtr pattrNode = NULL;
HRESULT hr = pdoc.CreateInstance(__uuidof(DOMDocument60));
if(FAILED(hr))
{
printf("无法创建DOMDocument60对象!");
return EXIT_FAILURE;
}
VARIANT_BOOL xmlLoad = pdoc->load((_variant_t)xmlFile);
//加载失败
if(!xmlLoad)
{
printf("加载%s失败!\n", xmlFile);
return EXIT_FAILURE;
}
prootElement = pdoc->GetdocumentElement();
cout<< (char*)prootElement->GetnodeName() <<endl;
CoUninitialize();
return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
ReadXMLFile();
getchar();
return 0;
}
代码如上,就是普通的xml解析代码,运行时会有内存错误:某处有未处理的异常,读取位置发生访问冲突。(能正确输出)
请问,怎么解决?
C++
XML
msxml
------解决方案--------------------
调试跟踪一下异常的位置,一般是空指针或对象没有获取到