曝光臺 注意防騙
網(wǎng)曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
我們也說明D O M規(guī)范僅僅描述了訪問機制,而不涉及特定的實現(xiàn)。但是,我們?nèi)绾卫眠@些信
息,將它們應(yīng)用于特定的問題?為此,我們需要使用DOM API。
5.2.1 DOM API
編寫通過D O M訪問X M L文件的軟件時,必須使用特定的D O M實現(xiàn)。實現(xiàn)是某種形式的類
庫,它設(shè)計為運行在特定的硬件和軟件平臺上,并訪問特定的數(shù)據(jù)存儲(例如:文本文件,關(guān)
系數(shù)據(jù)庫,等等)。
1. 什么是A P I
應(yīng)用程序編程接口( Application Programming Interface, API)。不要受接口一詞的誤導(dǎo)—
A P I實際上是一組類庫,一個組件利用它指示另一個組件執(zhí)行更底層的服務(wù)。同樣地, A P I必須
是一個接口的實現(xiàn),它包含適當(dāng)?shù)拇a用于連接其他組件,并指示它們執(zhí)行相應(yīng)的功能。
D O M并不是A P I
如前所述,W3C DOM僅僅提供了D O M類庫的接口定義,而沒有提供特定的實現(xiàn)。為程序
員提供D O M實現(xiàn)的任務(wù)要由第三方完成。當(dāng)你打算使用D O M操作應(yīng)用程序中的X M L結(jié)構(gòu)時,
對于應(yīng)用程序的每個目標(biāo)平臺,都要獲取相應(yīng)平臺的D O M實現(xiàn)。在大多數(shù)情況下,這些類庫要
與你的應(yīng)用程序綁定,并與應(yīng)用程序的二進制代碼一起分發(fā)。
需要注意的是,與H T M L解析器的實現(xiàn)類似, D O M的實現(xiàn)應(yīng)該聲明它所遵守的W 3 C規(guī)范。
考慮到在本書出版之際W 3 C規(guī)范的狀態(tài)(DOM Level 1是一個建議,DOM Level 2是一個候選建
議),D O M的所有實現(xiàn)至少要提供Level 1文檔中描述的功能。許多D O M實現(xiàn)還提供附加的功能
—Level 2文檔中描述的行為,或者特定實現(xiàn)的開發(fā)者認(rèn)為有用的附加行為。例如, M i c r o s o f t
D O M支持Level 1規(guī)范的所有內(nèi)容,除此之外還提供其他導(dǎo)航方法,以及用于支持樣式表的方法
和屬性,等等。與其他開發(fā)工作類似,在決定是否利用特定的D O M實現(xiàn)提供的附加功能之前,
必須考慮你的目標(biāo)平臺。
2. XML數(shù)據(jù)結(jié)構(gòu)編程
使用D O M訪問X M L節(jié)點樹中的信息時,最好圍繞著D O M提供的訪問機制設(shè)計系統(tǒng)。舉例
來說,如果你使用面向?qū)ο蟮臄?shù)據(jù)庫,可以根據(jù)X M L元素定制相應(yīng)的對象。如果你知道要使用
哪些元素,可以創(chuàng)建封裝其他對象的對象,并以盡可能最有效的方式在內(nèi)存中復(fù)制X M L樹—
我們在前面介紹了一個有關(guān)“雪花型”數(shù)據(jù)庫的例子。
另外,你應(yīng)該記住X M L文件常常相當(dāng)大,因此內(nèi)存管理變得至關(guān)重要。良好的D O M實現(xiàn)能
夠在需要時提供即時的元素提。ㄗx取元素信息時,這是以更長的搜索和獲取時間為代價的),
同時它應(yīng)該提供良好的內(nèi)存管理,避免超過內(nèi)存容量或者交換失敗。程序應(yīng)該監(jiān)視系統(tǒng)資源,
并設(shè)定閾值,當(dāng)超過閾值時,不允許D O M訪問更多的文件,直至系統(tǒng)資源被釋放。如果僅僅由
120使用XML 高級編程
下載
于文件過大而導(dǎo)致采用D O M方式的實現(xiàn)無法處理,則只能轉(zhuǎn)向S A X等事件驅(qū)動的解析器(第6
章將討論S A X)。
5.2.2 客戶端和服務(wù)器端
雖然有許多D O M和X M L應(yīng)用程序,但是它們基本上可以分為兩種類型:用于服務(wù)器端的
(或者在一個可控的環(huán)境中,例如:客戶機-服務(wù)器系統(tǒng))和用于客戶端的。針對每種類型,我們
將討論D O M的一些潛在應(yīng)用。
1. 服務(wù)器端的D O M
由于I n t e r n e t開發(fā)人員能夠?qū)Ψ⻊?wù)器上的軟件進行更多的控制,因此D O M的應(yīng)用通常首先是
在服務(wù)器端的。D O M能夠極大地簡化不同商業(yè)系統(tǒng)之間的數(shù)據(jù)交換,并且為數(shù)據(jù)的存檔和獲取
提供了理想的機制。
(1) 文檔交換
X M L在企業(yè)中的首要應(yīng)用將是簡化過程之間以及業(yè)務(wù)之間的通信。與普通的文件或數(shù)據(jù)庫
等傳輸格式相比,X M L有許多優(yōu)勢:
• X M L文件是獨立于平臺的—與A c c e s s數(shù)據(jù)庫或SQL Server不同,X M L文件實際上能夠被
任何系統(tǒng)讀取和理解,系統(tǒng)只要讀取文檔,并利用系統(tǒng)上的D O M實現(xiàn)將文檔解析為節(jié)點
樹。
• X M L文件是自描述的—與普通的文件(它需要程序員協(xié)商文件的格式描述,并進行適當(dāng)
的轉(zhuǎn)換)不同,設(shè)計良好的X M L文件只需要很少的外部解釋文檔—每個描述作者的元素
被明確地標(biāo)記為< a u t h o r >,依此類推。
• X M L文件顯示層次化信息—普通的文件可能包含重復(fù)的子元素組(例如:某個作者寫的
所有書),而X M L文件設(shè)計為以一種自然的方式表達(dá)層次信息—通過節(jié)點樹。舉例來說,
如果X M L文件包含7位作者和2 2本書,只需要遍歷由D O M創(chuàng)建的節(jié)點樹,就立即能夠了解
哪本書是與哪位作者相關(guān)的。
目前,軟件界有一種強大的趨勢—將用于業(yè)務(wù)之間信息傳遞的X M L格式標(biāo)準(zhǔn)化。B i z Ta l k
(w w w. b i z t a l k . o rg)和XML Mortgage Partners(w w w. x m l m o r t g a g e . o rg)等組織正在創(chuàng)建D T D、
模式和數(shù)據(jù)字典,它們將有助于提高不同業(yè)務(wù)之間信息交流的效率。
(2) 存檔
如果要將信息存檔, X M L是一種理想的存儲方式—特別是當(dāng)這些信息是面向?qū)ο蟮幕蛘?br />
來自于層次型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫通常也(但不總是)比較容易表示為X M L節(jié)點樹。由于
X M L文件是基于文本的,而且可能包含許多重復(fù)的文本(標(biāo)記),因此常常有較高的壓縮率。一
個典型的相當(dāng)大的X M L文件能夠壓縮到原來大小的十分之一至二十分之一。通過遍歷數(shù)據(jù)庫的
層次樹或關(guān)系樹,并使用D O M構(gòu)造適當(dāng)?shù)墓?jié)點樹,很容易將整個信息集存檔到一個X M L文件
中。
以一個發(fā)票系統(tǒng)為例,假設(shè)它要刪除超過一年的發(fā)票。系統(tǒng)可以在每天晚上運行一個自動
過程,它掃描數(shù)據(jù)庫,尋找要存檔的發(fā)票。如果使用D O M,該過程可以在與發(fā)票相關(guān)的層次型
信息樹或關(guān)系型信息樹中搜索?蛻粜畔、運輸信息和行式項目信息等等都將封裝在一個文件
第5章文檔對象模型使用121 下載
中,這個文件用于表示發(fā)票。然后,系統(tǒng)可以壓縮該文件,并將它保存到磁帶或其他存檔介質(zhì)
上。如果你對于特定的發(fā)票有疑問,可以獲取并解壓相應(yīng)的X M L文件。而后通過讀取文件尋找
中國航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(51)