二、文件物件模型(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...