- 相關(guān)推薦
IBM XML認證知識點(diǎn):解析器
一個(gè) XML(XML培訓 編程語(yǔ)言培訓 ) Parser(解析器)是一段可以讀入一個(gè)文檔并分析其結構的代碼。下面YJBYS小編為大家整理了關(guān)于IBM XML認證知識點(diǎn),希望對你有所幫助。
Parser基礎
一個(gè) XML Parser(解析器)是一段可以讀入一個(gè)文檔并分析其結構的代碼。
在本章節,我們將討論如何使用一個(gè) XML 解析器來(lái)讀入一個(gè) XML 文檔。我們也將討論不同類(lèi)型的解析器以及您在何時(shí)使用它們。
如何使用一個(gè)解析器
通常而言,使用一個(gè)解析器需要如下步驟:
創(chuàng )建一個(gè)解析器對象
將您的 XML 文檔傳遞給解析器
處理結果
構建一個(gè) XML 應用顯然遠遠超出這些,但通常一個(gè) XML 的應用將包含這些流程。
解析器種類(lèi)
有不同的方法來(lái)劃分解析器種類(lèi):
驗證或非驗證解析器
支持 Document Object Model (DOM) 的解析器
支持 Simple API for XML (SAX) 的解析器
特定語(yǔ)言編寫(xiě)的解析器 (Java, C++, Perl 等)
接下來(lái)我們將討論這幾種解析器的各自特點(diǎn).
驗證或非驗證解析器
如我們在前面所提及的,XML 文檔如果使用一個(gè) DTD 并符合 DTD 中的規則將被稱(chēng)為有效文檔(valid document)。符合基本標記規則的 XML 文檔被稱(chēng)為格式正確文檔(well-formed document)。
XML 規范要求所有的解析器當其發(fā)現一個(gè)文檔不是格式正確時(shí)要報錯。
驗證(Validation)則是另一個(gè)問(wèn)題了。驗證解析器(Validating parser)在解析 XML 文檔同時(shí)進(jìn)行驗證。非驗證解析器(Non-validating parser) 忽略所有的驗證錯誤。
換而言之,如果一個(gè) XML 文檔是格式正確的時(shí),一個(gè)非驗證解析器并不關(guān)注文檔是否符合其對應 DTD 所指定的規則(如果有的話(huà))。
為何使用非驗證解析器?
速度和效率。要一個(gè) XML 解析器處理 DTD 并確保每個(gè) XML 的元素符合在 DTD 中的規則需要相當大的開(kāi)銷(xiāo)。如果您確定一個(gè) XML 文檔是有效的(可能來(lái)自一個(gè)數據源),那就沒(méi)有必要再次驗證它了。
同樣,有時(shí)您所需要的只是從一個(gè)文檔中找出 XML 的標記。一旦您有了這些標記,您可以將數據從中提取出然后加以處理。如果這就是您所需要的,一個(gè)非驗證解析器就是正確的選擇。
Document Object Model (DOM)
文檔對象模型(Document Object Model)是 World Wide Web Consortium(W3C) 的正式推薦。它定義了一個(gè)接口使得程序可以存取和更新 XML 文檔的風(fēng)格、結構和內容。支持 DOM 的 XML 解析器實(shí)現該接口。
該規范的第一版,DOM Level 1,可從 http://www.w3.org/TR/REC-DOM-Level-1 獲得。
當您用一個(gè) DOM 解析器來(lái)解析一個(gè) XML 文檔時(shí),您將獲得一個(gè)包含文檔中所有元素的樹(shù)結構。DOM 提供了不同的功能來(lái)檢查文檔的內容和結構。
Simple API for XML (SAX)
SAX API 是另一種處理 XML 文檔內容的方法。一個(gè)既成事實(shí)的標準,它由 David Megginson 和 XML-Dev 郵件列表其它成員所開(kāi)發(fā)。
要查看完整的 SAX 標準,參見(jiàn) www.megginson.com/SAX/。要參加 XML-Dev 郵件列表,發(fā)送郵件到 majordomo@ic.ac.uk 其中包含: subscribe xml-dev。
當您使用 SAX 解析器來(lái)解析 XML 文檔時(shí),解析器在文檔的不同處將產(chǎn)生事件。由您來(lái)決定對每個(gè)事件如何處理。
SAX 解析器會(huì )在以下情況下產(chǎn)生事件:在文檔開(kāi)始和結束時(shí),在一個(gè)元素開(kāi)始和結束時(shí),或者它在一個(gè)元素中找到字符時(shí),以及其它若干點(diǎn)。您可編寫(xiě) Java 代碼來(lái)處理每個(gè)事件,以及如何處理從解析器獲得的信息。
何時(shí)使用 SAX?何時(shí)使用 DOM?
為了確定哪種接口適合您,您需要理解所有接口的設計要點(diǎn),而且需要理解應用程序用您將要處理的 XML 文檔來(lái)做什么?紤]下面的問(wèn)題將有助于您找到正確的方法。
要用 Java 編寫(xiě)應用程序嗎?
JAXP 使用 DOM、SAX 和 JDOM;如果您用 Java 編寫(xiě)代碼,那么您應使用 JAXP 將您的代碼與各種解析器實(shí)現的細節隔離。
應用程序將如何部署?
如果您的應用程序將要作為 Java applet 部署,那么您會(huì )希望使要下載的代碼數量最小,別忘了 SAX 解析器比 DOM 解析器小。還要知道使用 JDOM 時(shí),除了 SAX 或 DOM 解析器之外還要求編寫(xiě)少量的代碼。
一旦解析了 XML 文檔,還需要多次訪(fǎng)問(wèn)那些數據嗎?
如果您需要回過(guò)頭來(lái)訪(fǎng)問(wèn) XML 文件的已解析版本,DOM 可能是正確的選擇。而 SAX 事件被觸發(fā)時(shí),如果您以后需要它,則由您(開(kāi)發(fā)人員)自己決定以某種方式保存它。如果您需要訪(fǎng)問(wèn)不曾保存的事件,則必須再次解析該文件。而 DOM 自動(dòng)保存所有的數據。
只需要 XML 源文件的少量?jì)热輪?
如果您只需要 XML 源文件的少量?jì)热,那?SAX 可能是正確的選擇。SAX 不會(huì )為源文件中的每個(gè)東西創(chuàng )建對象;您要確定什么是重要的。使用 SAX,您要檢查每個(gè)事件以了解它是否與您的需要有關(guān),然后相應地處理它。更妙的是,一旦找到您正在尋找的東西,您的代碼就會(huì )拋出一個(gè)異常來(lái)完全停止 SAX 解析器。
您正在一臺內存很少的機器上工作嗎?
若是的話(huà),不管您可能考慮到的其它因素是什么,SAX 是您的最佳選擇。
要知道還存在用于其它語(yǔ)言的 XML API;尤其是 Perl 和 Python 社區有極佳的 XML 工具。
【IBM XML認證知識點(diǎn):解析器】相關(guān)文章:
關(guān)于IBM XML認證考試的要點(diǎn)09-07
ibm認證考試知識點(diǎn)08-05
IBM認證考試認證體系06-27
IBM認證的優(yōu)勢08-20
IBM認證優(yōu)勢07-28
IBM認證項目07-03
IBM認證簡(jiǎn)介07-24