| VC實現(xiàn)對XML文件的讀寫 點擊:0 發(fā)布日期:2007-6-11 13:29:00 進入論壇 1、安裝MSXML 4.0 SP2。在VC6中建立一個基于Dialog的工程。如圖: 在界面上放置3個編輯框、1個按鈕控件。其中屬性設置如下。 編輯框: ID Category Variable Type Variable Name IDC_ID Value CString m_strId IDC_AUTHOR Value CString m_strAuthor IDC_TITLE Value CString m_strTitle 按鈕: ID Caption IDC_GENERATE Generate IDC_LOAD Load 2、在App類的InitInstance函數(shù)里面加入如下代碼:   // Com口初始化  AfxOleInit(); 3、在StdAfx.h中引入動態(tài)鏈接庫 MSXML.DLL(C:\windows\system32\msxml4.dll)   #import  < msxml4.dll >  4、雙擊Generate按鈕,在消息處理函數(shù)中添加如下代碼:   UpdateData(TRUE); MSXML2::IXMLDOMDocumentPtr pDoc; MSXML2::IXMLDOMElementPtr xmlRoot ; // 創(chuàng)建DOMDocument對象 HRESULT hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if ( ! SUCCEEDED(hr)) { MessageBox( " 無法創(chuàng)建DOMDocument對象,請檢查是否安裝了MS XML Parser 運行庫! " ); return ; } // 根節(jié)點的名稱為Book // 創(chuàng)建元素并添加到文檔中 xmlRoot = pDoc -> createElement((_bstr_t) " Book " ); // 設置屬性 xmlRoot -> setAttribute( " id " ,( const char * )m_strId); pDoc -> appendChild(xmlRoot); MSXML2::IXMLDOMElementPtr pNode; // 添加“author”元素 pNode = pDoc -> createElement((_bstr_t) " Author " ); pNode -> Puttext((_bstr_t)( const char * )m_strAuthor); xmlRoot -> appendChild(pNode); // 添加“Title”元素 pNode = pDoc -> createElement( " Title " ); pNode -> Puttext(( const char * )m_strTitle); xmlRoot -> appendChild(pNode); // 保存到文件 // 如果不存在就建立,存在就覆蓋 pDoc -> save( " d:\\he.xml " ); 雙擊Load按鈕,在消息處理函數(shù)中添加如下代碼:  MSXML2::IXMLDOMDocumentPtr pDoc; HRESULT hr; hr = pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument40)); if (FAILED(hr)) { MessageBox( " 無法創(chuàng)建DOMDocument對象,請檢查是否安裝了MS XML Parser 運行庫! " ); return ; } // 加載文件 pDoc -> load( " d:\\he.xml " ); MSXML2::IXMLDOMNodePtr pNode; // 在樹中查找名為Book的節(jié)點," // "表示在任意一層查找 pNode = pDoc -> selectSingleNode( " //Book " ); MSXML2::DOMNodeType nodeType; // 得到節(jié)點類型 pNode -> get_nodeType( & nodeType); // 節(jié)點名稱 CString strName; strName = ( char * )pNode -> GetnodeName(); // 節(jié)點屬性,放在鏈表中 MSXML2::IXMLDOMNamedNodeMapPtr pAttrMap = NULL; MSXML2::IXMLDOMNodePtr pAttrItem; _variant_t variantvalue; pNode -> get_attributes( & pAttrMap); long count; count = pAttrMap -> get_length( & count); pAttrMap -> get_item( 0 , & pAttrItem); // 取得節(jié)點的值 pAttrItem -> get_nodeTypedValue( & variantvalue); m_strId = ( char * )(_bstr_t)variantvalue; UpdateData(FALSE); 本文來自: 中國自學編程網(wǎng)(www.) 詳細出處參考:http://www./html/20070611/22861.html | 
|  |