VC讀取XML文件的方法

2021-06-01 02:22:01 字數 2668 閱讀 9965

二、文件物件模型(dom)

dom是document object model(文件物件模型)的簡稱,是對web文件進行應用開發、程式設計的應用程式介面(api)。作為w3c公布的一種跨平台、與語言無關的介面規範,dom提供了在不同環境和應用中的標準程式介面,可以用任何語言實現。

dom採用物件模型和一系列的介面來描述xml文件的內容和結構,即利用物件把文件模型化。這種物件模型實現的基本功能包括:

● 描述文件表示和操作的介面;

● 介面的行為和屬性;

● 介面之間的關係以及互操作。

dom可對結構化的xml文件進行解析,文件中的指令、元素、實體、屬性等所有內容個體都用物件模型表示,整個文件被看成是乙個有結構的資訊樹,而不是簡單的文字流,生成的物件模型就是樹的節點,物件同時包含了方法和屬性。因此,對文件的所有操作都是在物件樹上的進行。在dom中,樹中的一切都是物件,不管是根節點還是實體的屬性。

在dom中主要有以下三個物件:

● xml文件物件 xml文件既是一種物件,同時又代表整個xml文件。它由根元素和子元素組成。

● xml節點物件 xml節點物件代表的是xml文件內部的節點,如元素、注釋、名字空間等。

● xml節點列表 xml文件模組列表代表了節點的集合。

利用dom,開發人員可以動態地建立xml文件,遍歷結構,新增、修改、刪除內容等。其物件導向的特性,使人們在處理xml解析相關的事務時節省大量的精力,是一種符合**重用思想的強有力程式設計工具。

四、程式實現

1、xml文件的例子:

<?xml version="1.0" ?>

《天氣》睛

整個文件便是乙個文件物件domdoccument,

domdoccument下的nodelist有兩個,像天氣,早上,晚上等等就是node

2、準備活動

#import或#import注意:不要用#import,因為解析時用到的許多方法在msxml 2.0以前版本中是沒有的。

3、初始化com介面

::coinitialize(null);

4、正式編碼

注意:所有**均要放在com介面初始化後的{}中,要不會有智慧型指標的錯誤。

1)、定義

msxml2::ixmldomdocumentptr docptr;  //domdocument

msxml2::ixmldomnodeptr nodeptr;  //ixmldomnode

msxml2::ixmldomnodelistptr listptr;  //ixmldomnodelist

2)、開啟文件

hresult hr = s_ok;

hr = docptr.createinstance(__uuidof(msxml2::domdocument40)); //初始化環境

if( !succeeded(hr))

docptr->preservewhitespace = variant_false;   //開啟文件

docptr->validateonparse = variant_false;

variant_bool vbsuccessful = variant_false; 

vbsuccessful = docptr->load( colevariant((lpcstr)strxmlfilepath));

if(vbsuccessful == variant_false)

3)、使用所提供的方法處理文件

所用方法讀者可以自己去試,功能可以通過名字開知道,引數和返回值函式由定義可以知道,使用者可以根據自己需要去自己使用。

4)、以下是我讀過乙個文件的**,希望會對使用者有所幫助

cstring strxmlfilepath = "e:\\xml20060826\\xml20060826\\sj.xml"; //檔名

int k = 0;

::coinitialize(null);

docptr->preservewhitespace = variant_false;   //開啟文件

docptr->validateonparse = variant_false;

variant_bool vbsuccessful = variant_false; 

vbsuccessful = docptr->load( colevariant((lpcstr)strxmlfilepath));

if(vbsuccessful == variant_false)

listptr0 = docptr->getchildnodes();  //入根層

listptr1 = listptr0->getitem(1)->getchildnodes(); //進入站名站號表結點下

for(long i = 1; i < listptr1->getlength(); i++)

catch(_com_error &err)// }}

}}}五、結束語

因為xml文件有著比html更嚴格的語法要求,所以使用和編寫乙個xml解析器要比編寫乙個html解析器要容易得多。同時因為xml文件不僅可以標記文件的顯示屬性,更重要的是它標記了文件的結構和包含資訊的特徵,所以我們可以方便地通過xml解析器來獲取特定節點的資訊並加以顯示或修改,方便了使用者對xml文件的操作和維護。同時我們需要注意的是,xml是一種開放的結構體系,並不依賴於任何一家公司,所以開發基於xml的應用必然會得到絕大多數軟體開發平台的支援。

Xml的讀取方法

c 中可以用xmldocument類操作xml檔案 xml檔案格式較多,一種為較複雜的 在 中新增元素資料的,一種為在 中新增元素資料的 xml version 1.0 encoding utf 8 root person name wangyao age 25 age person person ...

VC 讀取XML檔案生成樹

void cmonitoremulationview loadtree catch com error e xml ixmldomnodelistptr pnodelist null xml ixmldomelementptr spelement hresult hr pxmldoc get doc...

讀取Xml文件的元素和屬性

1001張三男 1987 1 12 1002李四女 1986 5 12 1003王二男 1985 1 15 看看上面的文件,當我們把它載入到記憶體中之後,各個節點都有自己的型別,首先整個xml都是document文件 它則是xmldeclaration型別的 下面的stuinfo,student,i...