最近,由於工作需要程式生成
xml的索引記錄檔案,特將
vc++
讀寫xml
首先:建立乙個基於
dialog
的mfc
工程,工程名為
operatexml
,然後在對話方塊上新增兩個按鈕
("create"
和"getdata"
和乙個listcontrol控制項(
用來顯示資料
),首先要導入庫檔案
#import "msxml3.dll"
using namespace msxml2;
主要用來實現
xml檔案的相關操作,
雙擊"create"
按鈕進入**編寫,**如下:
void coperatexml::onbtncreate() 雙擊
"getdata"
按鈕進入**編寫,**如下:
void coperatexml::onbtnget()
pdoc->load("d://test.xml");
msxml2::ixmldomelementptr childnode;
childnode = (msxml2::ixmldomelementptr)(pdoc->selectsinglenode("//city"));
msxml2::domnodetype nodetype;
childnode->get_nodetype(&nodetype);
獲取節點屬性個數
nodelist->get_length(&icount); //
獲取節點個數
for(int i = 0; i < icount; i++) //
根據需要可以新增資料到
listcontrol中}
} 為listcontrol
控制項繫結乙個操作變數
clistctrl m_list; 在
oninitdialog
中初始化,**如下:
bool coperatexml::oninitdialog() f7
編譯程式,
ctrl+f5
檢視顯示結果,至此乙個簡單的操作
xml檔案的實現已經成功的完成了。
程式**
#import "msxml6.dll" named_guids raw_inte***ces_only
#include
using namespace msxml2;
using namespace std;
int testxml(wstring strfilname)
hr = cocreateinstance(clsid_domdocument60, null, clsctx_inproc_server,
msxml2::iid_ixmldomdocument, (void**)&pdoc);
if(failed(hr))
throw "failed to create dom doc";
variant_bool bissuccessful;
bstr bstr1 = sysallocstring(l"d://b.xml");
variant v1;
v1.vt = vt_bstr;
v1.bstrval = bstr1;
/ 載入
xml檔案
pdoc->load(v1, &bissuccessful);
sysfreestring(bstr1);
/ 獲取根節點
root_basename
//proot = pdoc->firstchild;
pdoc->get_firstchild(&proot);
/ 輸出跟節點名字
bstr bstr;
proot->get_nodename(&bstr);
cout << (char*)((_bstr_t)bstr) 獲取根節點屬性
attr_basename_1 = "attr_text_1" attr_basename_2 = "attr_text_2"
proot->get_attributes(&pattr);
/ 取得屬性個數
long length;
pattr->get_length(&length);
cout << length << endl;
/ 輸出根節點屬性
for(cnt = 0 ; pattr->nextnode(&pnode), pnode ; ++cnt)
cout << "attr count " << cnt <
/ 輸出根節點所有兒子
proot->get_childnodes(&pnodelist);
pnodelist->get_length(&cnt);
cout << "length " << cnt << endl;
for(cnt = 0; pnodelist->nextnode(&pnode), pnode; ++cnt)
cout << "node count " << cnt <}
catch (string str)
catch (...)
::couninitialize();
cout << "end" <
return 0;
} xml
檔案:
text_1
text_2
text_3
vc中的xml開發
1.libxml是乙個跨平台庫.基於c語言的xml解析器.其主頁和網上內容很多,這裡整理一下.libxml原始碼示例 http xmlsoft.org examples index.html libxml參考手冊 http xmlsoft.org html index.html 主頁 http xm...
vc中通過MSXML操作XML檔案 轉貼
對xml檔案操作的時候,先安裝xml解析器,並要到進行初始話,然後就可以用下面的封裝好的類對xml檔案進行讀和寫的操作了.初始話很簡單 和ado的初始話工作類似 下邊以基於對話方塊的工程 test 為例,進行初始話 只要在test.cpp的initinstance 方法中加入 afxoleinit ...
用vc6操作xml以及xmldom的簡單介紹
在asp3或.net中經常用到xml的操作 以下寫一段vc6中生成xml的 做為引子寫一下 include msxml.h import c windows system32 msxml.dll rename namespace xml afxenablecontrolcontainer afxol...