怎麼樣用C 呼叫MSXML元件讀取XML檔案

2021-06-19 09:57:50 字數 1500 閱讀 8060

執行環境為vs2005,msxml3.0

下面是我們要讀取的乙個xml文件text.xml.

<?

xmlversion="1.0"

encoding="gb2312"

?>

<

xmlroot

>

<

item

start="天津"

aim="南京"

date="2008/12/15"

/>

<

item

start="南京"

aim="北京"

date="2008/12/15"

/>

<

item

start="天津"

aim="海南"

date="2008/12/16"

/>

xmlroot

>

下面是程式的主要**:

msxml2::ixmldomdocumentptr xmldoc = null;

msxml2::ixmldomnodelist* pnodelist = null;

variant_bool isread = variant_false;

long nodes = 0;

coinitialize(null);

if(!succeeded(xmldoc.createinstance(__uuidof(msxml2::domdocument30))))

variant var_src;

bstr src = sysallocstring(l"text.xml");

v_bstr(&var_src) = sysallocstring(src);

v_vt(&var_src) = vt_bstr;   

xmldoc->load(var_src,&isread);

if(isread != variant_true)

xmldoc->selectnodes(l"//xmlroot//item",&pnodelist);

if(pnodelist == null)

pnodelist->get_length(&nodes);

for(int i = 0;i

printf("/n");

pnode->release();

pattribs->release();        

}   

pnodelist->release();

variantclear(&var_src);

xmldoc.release();

couninitialize();

**比較簡單,所要提醒的是因為xmldoc是乙個智慧型指標,所以當它被釋放,重新賦值的時候都會將原來的所指向的內容釋放,也就是是會呼叫內部指標的release()所以。在xmldoc.release()之前不要呼叫xmldoc->release()或是couninitialize()之類會釋放內部指標所指物件的方法.否者會發生異常。

關於Hashtable怎麼樣儲存資料和讀取資料

建立 hashtable ht newhashtable 添值 ht.put 1,andy ht.put 2 bill ht.put 3 cindy ht.put 4 dell ht.put 5 felex ht.put 6 edinburg ht.put 7 green 取值 string str...

用CDN防禦DDOS攻擊怎麼樣?

cdn,內容分發網路,除了用作 加速外,還能夠更好的保護 不被攻擊。防護 不被攻擊的功能成就了cdn執行中的主要責任。cdn 防護原理是其主要在於在相關節點中成功的建立動態加速機制以及智慧型沉於等機制,這種機制能夠幫助 流量訪問分配到每乙個節點中,智慧型的進行流量分配機制。那麼cdn有哪些技術可以更...

怎麼樣用Redis輕鬆實現秒殺系統

導論 秒殺系統,是典型的短時大量突發訪問類問題。對這類問題,有三種優化效能的思路 寫入記憶體而不是寫入硬碟 非同步處理而不是同步處理 分布式處理 用上這三招,不論秒殺時負載多大,都能輕鬆應對。更好的是,redis能夠滿足上述三點。因此,用redis就能輕鬆實現秒殺系統。用我這個方案,無論是電商平台 ...