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