導(dǎo)航

          <2007年8月>
          2930311234
          567891011
          12131415161718
          19202122232425
          2627282930311
          2345678

          留言簿(4)

          隨筆分類

          隨筆檔案

          閱讀排行榜

          評論排行榜

          常用鏈接

          統(tǒng)計

          最新評論

          DOM教程(什么是DOM)-----來源:IBM developerWorks

          DOM教程(什么是DOM)
                                  作為結(jié)構(gòu)的 DOM
                DOM是以層次結(jié)構(gòu)組織的節(jié)點或信息片斷的集合。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中導(dǎo)航儀尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個文檔和構(gòu)造層次結(jié)構(gòu),然后才能做任何工作。由于它是基于信息層次的,因而 DOM 被認為是基于樹或基于對象的。
                對于特別大的文檔,解析和加載整個文檔可能很慢且很耗資源,因此使用其他手段來處理這樣的數(shù)據(jù)會更好。這些基于事件的模型,比如 Simple API for XML(SAX),適用于處理數(shù)據(jù)流,即隨著數(shù)據(jù)的流動而依次處理數(shù)據(jù)。基于事件的 API 消除了在內(nèi)存中構(gòu)造樹的需要,但是卻不允許開發(fā)人員實際更改原始文檔中的數(shù)據(jù)。
               另一方面,DOM 還提供了一個 API,允許開發(fā)人員添加、編輯、移動或刪除樹中任意位置的節(jié)點,從而創(chuàng)建一個引用程序。
               解析器是一個軟件應(yīng)用程序,設(shè)計用于分析文檔(這里是指 XML 文件),以及做一些特定于該信息的事情。在諸如 SAX 這樣基于事件的 API 中,解析器將向某種監(jiān)聽器發(fā)送事件。在諸如 DOM 這樣基于樹的 API 中,解析器將在內(nèi)存中構(gòu)造一顆數(shù)據(jù)樹。
          作為 API 的 DOM
               從 DOM Level 1 開始,DOM API 包含了一些接口,用于表示可從 XML 文檔中找到的所有不同類型的信息。它還包含使用這些對象所必需的方法和屬性。
          Level 1 包括對 XML 1.0 和 HTML 的支持,每個 HTML 元素被表示為一個接口。它包括用于添加、編輯、移動和讀取節(jié)點中包含的信息的方法,等等。然而,它沒有包括對 XML 名稱空間(XML Namespace)的支持,XML 名稱空間提供分割文檔中的信息的能力。
               DOM Level 2 添加了名稱空間支持。Level 2 擴展了 Level 1,允許開發(fā)人員檢測和使用可能適用于某個節(jié)點的名稱空間信息。Level 2 還增加了幾個新的模塊,以支持級聯(lián)樣式表、事件和增強的樹操作。
               當(dāng)前正處于定稿階段的 DOM Level 3 包括對創(chuàng)建 Document 對象(以前的版本將這個任務(wù)留給實現(xiàn),使得創(chuàng)建通用應(yīng)用程序很困難)的更好支持、增強的名稱空間支持,以及用來處理文檔加載和保存、驗證以及 XPath 的新模塊;XPath 是在 XSL 轉(zhuǎn)換(XSL Transformation)以及其他 XML 技術(shù)中用來選擇節(jié)點的手段。
               DOM 的模塊化意味著作為開發(fā)人員,您必須知道自己希望使用的特性是否受正在使用的 DOM 實現(xiàn)所支持。
                                                  確定特性可用性
               DOM 推薦標準的模塊性質(zhì)允許實現(xiàn)者挑選將要包括到產(chǎn)品中的部分,因而在使用某個特定的特性之前,首先確定該特性是否可用可能是必要的。本教程僅使用 DOM Level 2 Core API,不過在著手您自己的項目時,了解如何能夠檢測特性是有所幫助的。
               DOM 中定義的接口之一就是 DOMImplementation。通過使用 hasFeature() 方法,您可以確定某個特定的特性是否受支持。DOM Level 2 中不存在創(chuàng)建DOMImplementation 的標準方法,不過下面的代碼將展示如何使用 hasFeature() 來確定 DOM Level 2 樣式表模塊在某個 Java 應(yīng)用程序中是否受支持。
          import javax.xml.parsers.DocumentBuilderFactory;
          import javax.xml.parsers.DocumentBuilder;
          import org.w3c.dom.DOMImplementation;
          public class ShowDomImpl {
             public static void main (String args[]) {
                try {
                   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                   DocumentBuilder docb = dbf.newDocumentBuilder();
                   DOMImplementation domImpl = docb.getDOMImplementation();
                   if (domImpl.hasFeature("StyleSheets", "2.0")) {
                      System.out.println("Style Sheets are supported.");
                   } else {
                      System.out.println("Style Sheets are not supported.");
                   }
                } catch (Exception e) {}      
           }
          }
          (DOM Level 3 將包括用于創(chuàng)建 DOMImplementation 的標準方法。)
               本教程將使用單個文檔來展示 DOM Level 2 Core API 的對象和方法。
                                                  基本的 XML 文件
               本教程中的所有例子都是用了一個包含如下節(jié)點的 XML 文件,它表示輸入某個商業(yè)系統(tǒng)的訂單?;仡櫼幌?,XML 文件的基本組成部分包括:
               XML 聲明:基本的聲明 <?xml version"1.0"?> 將這個文件定義為 XML 文檔。在聲明中指定一種字符編碼的情況并不鮮見,如下所示。通過這種方式,不管該 XML 文件使用的語言或字符編碼是什么,只要解析器理解特定的編碼,它就能夠正確地讀取該 XML 文件。 
               DOCTYPE 聲明:XML 是人機之間交換信息的便利手段,但是要使它能夠順利地工作,必須要有一個公共的詞匯表??蛇x的 DOCTYPE 聲明可用于指定一個應(yīng)該用來與此文件做比較的文檔(在本例中為 orders.dtd),以確保不會產(chǎn)生任何混淆或丟失信息(例如,丟失一個 userid 或錯誤拼寫某個元素名稱)。以這種方式處理過的文檔稱為有效的文檔。成功的有效性檢查并不是 XML 所必需的,后面的例子實際上從文檔中省略了 DOCTYPE 聲明。 
               數(shù)據(jù)本身:XML 文檔中的數(shù)據(jù)必須包含在單個根元素內(nèi),比如下面的 orders 元素。要使 XML 文檔得到處理,它必須是格式良好的(well-formed)。 
          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE ORDERS SYSTEM "orders.dtd">
          <orders>
             <order>
                <customerid limit="1000">12341</customerid>
                <status>pending</status>
                <item instock="Y" itemid="SA15">
                   <name>Silver Show Saddle, 16 inch</name>
                   <price>825.00</price>
                   <qty>1</qty>
                </item>
                <item instock="N" itemid="C49">
                   <name>Premium Cinch</name>
                   <price>49.00</price>
                   <qty>1</qty>
                </item>
             </order>
             <order>
                <customerid limit="150">251222</customerid>
                <status>pending</status>
                <item instock="Y" itemid="WB78">
                   <name>Winter Blanket (78 inch)</name>
                   <price>20</price>
                   <qty>10</qty>
                </item>
             </order>
          </orders>
              在 DOM 中,使用 XML 信息意味著首先將它劃分為節(jié)點。

          posted on 2007-08-09 12:55 九寶 閱讀(321) 評論(0)  編輯  收藏 所屬分類: XML


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 喀喇| 新昌县| 南漳县| 响水县| 达拉特旗| 本溪| 扶绥县| 务川| 兰州市| 连云港市| 武陟县| 阿图什市| 内黄县| 南靖县| 揭西县| 通渭县| 汉中市| 仁布县| 宝鸡市| 贞丰县| 岳阳市| 郑州市| 桐城市| 新巴尔虎左旗| 九龙坡区| 阜阳市| 体育| 江津市| 绥化市| 大荔县| 丹巴县| 利川市| 鄂托克前旗| 洛浦县| 虞城县| 普定县| 新绛县| 肥西县| 永福县| 牟定县| 台湾省|