一個寫 xml 文件的問題,大家幫忙!!!!!!!!!!!


#include "stdafx.h"
#include <stdio.h>
#include <atlbase.h >
#include <windows.h>
#import <msxml4.dll>raw_interfaces_only //head file


int _tmain(int argc, _TCHAR* argv[])
{
TCHAR m_strId[] = L"bk101";
TCHAR m_strAuthor[] = L"jay";
TCHAR m_strTitle[] = L"myxml";
TCHAR m_path[] = L"e:\\me.xml";

VARIANT var;
USES_CONVERSION;
var.vt = VT_BSTR;
var.bstrVal = A2W(LPCSTR(m_strId));

VARIANT var1;
var1.vt = VT_BSTR;
var1.bstrVal = A2W(LPCSTR(m_strAuthor));

VARIANT var2;
var2.vt = VT_BSTR;
var2.bstrVal = A2W(LPCSTR(m_strTitle));

VARIANT var3;
var3.vt = VT_BSTR;
var3.bstrVal = A2W(LPCSTR(m_path));


CoInitialize(NULL);

MSXML2::IXMLDOMDocumentPtr pDoc;
MSXML2::IXMLDOMElementPtr xmlRoot;

HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(!SUCCEEDED(hr))
{
printf("創建domdocument對象失敗!\n");
getchar();
return 0;
}

xmlRoot=pDoc->createElement((_bstr_t)"Book",NULL);
xmlRoot->setAttribute((_bstr_t)"id",var);
pDoc->appendChild(xmlRoot,NULL);

MSXML2::IXMLDOMElementPtr pNode;

pNode=pDoc->createElement((_bstr_t)"Author",NULL);
  pNode->put_text((_bstr_t)var1);
    xmlRoot->appendChild(pNode,NULL);

pNode=pDoc->createElement((_bstr_t)"Title",NULL);
    pNode->put_text((_bstr_t)var2);
    xmlRoot->appendChild(pNode,NULL);

 pDoc->save(var3); 
 //pDoc._Release();

 return 0;
}

程序編譯可以通過,但調試總是到
HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40));
if(!SUCCEEDED(hr))
{
printf("創建domdocument對象失敗!\n");
getchar();
return 0;
}這里時,hr的值顯示:沒有注冊類別,然后就創建domdocument對象失敗了,這是怎么回事啊

6 个解决方案

#1


HRESULT hr = pDoc.CreateInstance(__uuidof(DOMDocument));

#2


hr顯示沒有注冊類別的錯誤解決了

現在調試運行到xmlRoot=pDoc->createElement((_bstr_t)"Book",NULL);這里就會彈出一個對話框報錯:
Unhandled exception at 0x7c812a5b in xmltest.exe: Microsoft C++ exception: _com_error at memory location 0x0012fb00..

我查了一下createElement()方法,需要兩個參數,但第二個參數不知道是做什么的,就設置NULL,會不會是這個參數的問題呢

#3


不可以為null
IXMLDOMElement* element;
pDoc->createElement((_bstr_t)"Book",&element);

#4


創建節點元素時這樣寫試試:
                                     CComVariant VarType(NODE_ELEMENT);
CString NodeName="publisher";
  MSXML2::IXMLDOMNodePtr m_pNewNode=NULL;
m_pNewNode=m_plDomDocument->createNode(VarType,NodeName.AllocSysString(),NodeName.AllocSysString());

#5


setAttribute和put_text兩個函數的參數也存在調試出錯的問題

xmlRoot->setAttribute((_bstr_t)"id",var);調試報錯:
Unhandled exception at 0x7c812a5b in xmltest.exe: Microsoft C++ exception: _com_error at memory location 0x0012faf4..


pNode->put_text((_bstr_t)var1);調試報錯:
Unhandled exception at 0x7c812a5b in xmltest.exe: Microsoft C++ exception: _com_error at memory location 0x0012faf4..

這個好像不時參數的問題啊

#6


lz 最好找本com書系統的看一下。

ps:我快成了改作業的了

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2021 ITdaan.com