• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-60  評論-98  文章-0  trackbacks-0
            Part1:對節點的操作

            重命名節點、合并內存中的兩個文檔或者將一個文檔中的部分內容加入到另一個文檔中

            1// Renaming nodes
            2Element element = document.createElementNS("http://example.com""street");
            3// if implementation can rename the node, element returned
            4// is the same object as was originally created
            5element = document.renameNode(element, "http://example.com""address");
            6// adopting previously created node to a different document
            7Node adoptedNode = document2.adoptNode(element);
            8

            比較節點——測試兩個節點是否相等、是否相同以及它們在文檔資料樹中的相對位置
            兩個對象要相同,它們必須在內存中是 同一個對象。另一方面,兩個對象要相等,它們只需具有相同的特性即可。因此,兩個相同的對象必定是相等的,但是兩個相等的對象不一定是相同的。
            isEqualNode  // 判等
            isSameNode  // 判同
            compareDocumentPosition  // 一個節點是另一個節點的后代還是祖先、在前面還是后面等等

            處理文本——檢索和設置一個 Element 節點的文本內容、wholeText
            1String oldContent = elem.getTextContent();
            2elem.setTextContent("content");
            3
            Text 接口的新屬性 wholeText 它返回在邏輯相鄰的文本節點中所包含的所有文本

            使用數據
            當附加了一些數據的節點上有事件發生時,已注冊的處理程序將被調用,并提供所有必需的信息來相應地更新結構

            Part2:對文檔的操作、訪問類型信息和Xerces中的實現方式
            映射到 Infoset——新的 Appendix C 提供了 XML Infoset 模型與 DOM 之間的映射
             1// XML Declaration information on
             2// the org.w3c.dom.Document interface
             3public String getXmlEncoding(); //獲取變法方式
             4public void setXmlEncoding(String xmlEncoding); // 設置編碼方式
             5public boolean getXmlStandalone();
             6public void setXmlStandalone(boolean xmlStandalone)
             7                                  throws DOMException;
             8public String getXmlVersion(); // xml版本
             9public void setXmlVersion(String xmlVersion)
            10                                  throws DOMException;
            11// element content whitespace property on the Text 
            12// interface
            13public boolean isWhitespaceInElementContent(); // 一個 Text 節點是否只包含可以被忽略的空白
            14
            通過 Attr 接口的 schemaTypeInfo 屬性,您還可以獲取一個屬性信息項的屬性類型特性的值 ——即一個屬性的類型。
            在這種映射中,XML Infoset 信息項都映射到其相應的 Node ,反之也一樣,一個信息項的每一個屬性都映射到其相應 Node 的屬性

            自舉——DOMImplementationRegistry 對象,通過使用機制機制,就可以使用對于應用程序最合適的實現
            1// set DOMImplementationRegistry.PROPERTY property 
            2// to reference all known DOM implementations
            3System.setProperty(DOMImplementationRegistry.PROPERTY,
            4                   "org.apache.xerces.dom.DOMImplementationSourceImpl");
            5// get an instance of DOMImplementationRegistry
            6DOMImplementationRegistry registry = DOMImplementationRegistry.newInstance();
            7// DOM implementation that support the specified features
            8DOMImplementation i = registry.getDOMImplementation("MutationEvent");
            9

            文檔標準化——Document 接口的 normalizeDocument 方法
            通過 DOMConfiguration 配置 normalizeDocument ,以便對文檔執行其他操作
             1// retrieve document configuration
             2DOMConfiguration config = document.getConfig();
             3// remove comments from
             4config.setParameter("comments"false);
             5// remove namespace declarations
             6config.setParameter("namespace-declarations"false);
             7// transform document
             8core.normalizeDocument();
             9// put document into a form closest to the XML Infoset 
            10config.setParameter("infoset"true);
            11// transform document
            12core.normalizeDocument();
            13
            normalizeDocument 方法還允許您用 XML Schema 或者 DTD 對內存中的文檔進行重新驗證
            為此,首先需要將 DOMConfiguration validate 參數設置為 true 。然后需要實現一個 DOMErrorHandler 對象,驗證錯誤將報告給這個對象,再用 error-handler 參數將這個對象注冊到 Document 上。這與對 SAX 解析器所做的工作很類似。最后,可以通過調用 normalizeDocument 檢查文檔是否有效。

            訪問類型信息——名為 TypeInfo 的新接口
            如果使用 DTD (在裝載的時候,或者使用 normalizeDocument ),那么一個屬性節點的 TypeInfo 表示這個屬性的類型。在 XML Infoset 中這是屬性信息項的屬性類型屬性。不過,對于元素節點, TypeInfo 的名稱為 null ,命名空間 URI 為 null ,這是因為 DTD 沒有定義元素類型。
            如果使用 XML Schema 驗證文檔,那么 TypeInfo 在元素節點上表示元素類型,而在屬性節點上表示屬性類型。

            在 Xerces2 中使用 DOM Level 3 API
             1// Retrieve configuration
             2DOMConfiguration config = document.getConfig();
             3// Set document base URI
             4document.setDocumentURI("file:///c:/data");
             5// Configure the normalizeDocument operation
             6config.setParameter("schema-type""http://www.w3.org/2001/XMLSchema");
             7config.setParameter("validate"true);
             8config.setParameter("schema-location""personal.xsd");
             9// Revalidate your document in memory
            10document.normalizeDocument();
            11
            驗證內存中的文檔
            posted on 2009-06-12 18:28 創建更好的解決方案 閱讀(1503) 評論(0)  編輯 收藏 引用 所屬分類: 面向對象軟件設計
            久久精品国产秦先生| 亚洲精品美女久久久久99| 久久99热国产这有精品| 91精品国产色综久久| 久久青青草原精品国产软件| 亚洲精品国产第一综合99久久| 久久99国产综合精品女同| 国产精品99久久久久久宅男| 久久亚洲AV成人无码软件| 91性高湖久久久久| 亚洲va久久久噜噜噜久久男同| 99久久国产主播综合精品| 波多野结衣AV无码久久一区| 久久99国产精品99久久| 久久精品国产免费观看三人同眠| 一级做a爰片久久毛片人呢| 麻豆av久久av盛宴av| 国产精自产拍久久久久久蜜| 色综合久久中文字幕无码| 日韩AV毛片精品久久久| 国产一区二区三区久久| 中文无码久久精品| 精品久久久久中文字| 91精品日韩人妻无码久久不卡| 色悠久久久久久久综合网| 久久久亚洲欧洲日产国码二区| 久久精品国产精品亚洲人人| 狠狠久久综合| 欧美综合天天夜夜久久| 亚洲中文字幕久久精品无码APP| 久久免费高清视频| 国产欧美久久久精品| 久久精品国产亚洲AV高清热| 香蕉久久夜色精品国产2020| 久久亚洲AV永久无码精品| 久久亚洲欧洲国产综合| 久久久91人妻无码精品蜜桃HD| Xx性欧美肥妇精品久久久久久| 国产精品久久一区二区三区| 久久精品免费观看| 国产成人久久久精品二区三区|