十万火急,请教解析xml的Load问题。解决给分
可执行exe程序和一个xml文件(collectpoint.xml)在同一个目录下,通过
extern WinApp theApp;
XmlFilePath = theApp.GetAppPath();
获取应用程序路径XmlFilePath。
现在程序需要调用xml文件,load里面怎么写啊,调了很久都没弄好。运行提示Failed load!请高手指点。
CComPtr <MSXML::IXMLDOMDocument> m_iXMLDoc;
HRESULT hr = m_iXMLDoc.CoCreateInstance(__uuidof( DOMDocument )); //创建文档对象
VARIANT_BOOL bFlag;
hr = m_iXMLDoc-> load(CComVariant(L "collectpoint.xml "), &bFlag); //load xml文件
if(hr == NULL)
::AfxMessageBox(_T( "Failed load! "),MB_OK,0);
[解决办法]
库文件有没有呀?
[解决办法]
hr == NULL?这判断有问题吧,用FAILED(hr)。
返回0是成功啊。
[解决办法]
对HRESULT的判断是FAILD(hr)...
[解决办法]
//创建XML文档
MSXML2::IXMLDOMDocumentPtr pXmlDom;
//创建XML文档的根元素
MSXML2::IXMLDOMElementPtr xmlRoot;
//根元素名称
CComBSTR rootname;
//根元素的子结点链表
MSXML2::IXMLDOMNodeListPtr pNodeList;
//根元素的子结点
MSXML2::IXMLDOMNodePtr pNode;
CoInitialize(NULL);
// TODO: Add extra validation here
//创建XML文档实例
HRESULT hr=CoCreateInstance(__uuidof(MSXML2::DOMDocument40),NULL,CLSCTX_INPROC_SERVER,
__uuidof(MSXML2::IXMLDOMDocument),(void**)&pXmlDom);
if(!SUCCEEDED(hr))
{
::MessageBox(NULL, "无法创建DOMDocument对象,请检查是否安装了MS XML Parser 运行库! ", "error ", MB_OK);
return -1;
}
pXmlDom-> put_async(VARIANT_FALSE);
pXmlDom-> put_validateOnParse(VARIANT_FALSE);
pXmlDom-> put_resolveExternals(VARIANT_FALSE);
//将XML文档导入内存中
pXmlDom-> load((_variant_t)str);