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