vc實現xml的操作

2021-05-22 07:05:01 字數 2842 閱讀 5364

最近,由於工作需要程式生成

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...