用MFC讀寫xml檔案

2021-04-12 12:35:46 字數 2189 閱讀 6593

最近又做了乙個新活,解析xml檔案 ,除了要讀出來檔案中元素的所有值,還要能把節點的結構表現出來。寫也是同樣,根據給定的資訊,用xml檔案記錄它們的基本資訊和父子關係。

輸入 cd c:windowssystem32 回車。

再輸入regsvr32 msxml4.dll 回車。

這時會提示您註冊msxml4 成功。

然後,在您的**中新增以下兩行**,這個是必須的,不然你是沒有辦法用到它提供的介面函式的。

#import 

"c:windowssystem32msxml4.dll

"或#import msxml4.dll

"using

namespace

msxml2;

//這一條語句並不是必須的,不過有了它,就不用再每次使用它的型別的時候加一條msxml2::了,所以最好加上。

以下就是我在開發過程中的一些心得了。

1、新增節點(元素):

新增節點當然首先要建立乙個節點(元素),建立乙個元素都是在ixmldomdocument或ixmldomdocumentptr上進行建立的,示例**如下:      

ixmldomdocumentptr write_pdoc;

ixmldomdocumentptr  write_iconpropleftnode

write_pdoc

->

raw_createelement((_bstr_t)(

char*)

"left", 

&write_iconpropleftnode);

//((_bstr_t)(char*)轉換字串型別

//raw_createelement和createelement作用相同,只是它們的引數和返回值不同。raw_createelement 將新

//建立的節點的指標作為引數,而createelement 是將建立的節點的指標作為返回值。msxml中有很多這樣的

//介面函式,後面遇到的,都可以這麼解釋(我認為)

建立了節點後,把建立的節點新增到他的父親節點上。

可以設定節點的屬性,也就是中的「id」和「type」

write_panelnode->setattribute("id",panelinfo_t.iconid);

write_panelnode->setattribute("type","panel");

2、查詢節點:

查詢節點有很多方法

(1)查詢指定名稱的節點:

pnode = read_panelnode->selectsinglenode(_bstr_t("//buttons"));  //注意,如果你確定你要查詢的節點的名字就是buttons得話,請一定加上「//」,不然返回的結果會是null的。selectsinglenode這個方法返回的是當前指標所指向的節點的所有字節點中第乙個匹配的節點。

(2)查詢已知節點的所有指定名稱的孩子節點:

ixmldomnodelistptr pbtnnodelist = null;

pbtnnodelist = read_panelnode->selectnodes(_bstr_t("//button"));

return pselected_nodes;

返回結果是panel節點下的所有button節點的節點指標list,如果想要遍歷每乙個button節點,可以使用 ixmldomnodelistptr 的get_item(int index, ixmldomnode* * nodeptr)方法(或者ixmldomnode* getitem(int index))。例子:

hresult hr = pbtnnodelist->get_item(indexbtn, &read_btnnode);

(3)查詢第乙個孩子節點:

ixmldomnodeptr ppropnode = null;

ppropnode = read_btnnode->getfirstchild();

(4)查詢指定節點的所有孩子節點:

ixmldomnodelistptr ppropchildnodelist = null;

ppropchildnodelist = ppropnode->getchildnodes();

得到孩子節點的節點指標list後就可以利用getitem方法得到每乙個孩子節點的指標了。

3、得到屬性值

待續,要工作了` `。。。。。

讀寫XML檔案

1.將xml資料寫入檔案 寫入xml 傳入obj得型別 儲存得檔案路徑 要儲存得資料 public void writeobjecttofile string filename,t obj 2.從檔案中讀取xml資料,並序列化為物件 從檔案中讀取資料到xml檔案 返回型別 讀取的檔案路徑 publi...

讀寫XML檔案

本文將會涉及3個方面的內容 1 訪問xml檔案 2 xml文件物件模型 3 xml和dataset 這裡我們先介紹操作xml檔案的兩個物件 xmltextreader和xmltextwriter 開啟和讀取xml檔案使用到的物件就是xmltextreader物件。下面的例子開啟了與程式在同一路徑下的...

讀寫xml檔案

以下面dameon來介紹讀取xml檔案 from xml.dom import minidom 建立dom物件 dom minidom.document 建立根節點。每次都要用dom物件來建立任何節點 root node dom.createelement info 用dom物件新增根元素 base...