• <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 創建更好的解決方案 閱讀(1517) 評論(0)  編輯 收藏 引用 所屬分類: 面向對象軟件設計
            国产美女亚洲精品久久久综合| 久久精品国产99国产精品| 久久久无码精品亚洲日韩蜜臀浪潮| 污污内射久久一区二区欧美日韩 | 色综合久久中文字幕综合网| 99久久中文字幕| 99久久婷婷国产综合亚洲| 青青草国产精品久久| 欧美激情精品久久久久久久九九九| 综合久久精品色| 国内精品久久九九国产精品| 久久e热在这里只有国产中文精品99| 日本久久中文字幕| 精品久久久久中文字幕日本| 久久成人18免费网站| 2019久久久高清456| 精品久久久久久无码国产| 狠狠综合久久AV一区二区三区| 99久久精品免费看国产一区二区三区| 久久久人妻精品无码一区| 国内精品伊人久久久久av一坑| 中文字幕亚洲综合久久菠萝蜜| 国产福利电影一区二区三区久久老子无码午夜伦不 | 日本久久久久久中文字幕| 久久无码AV一区二区三区| 久久综合欧美成人| 久久人人爽人人爽人人片av高请| 伊人 久久 精品| 久久久久18| 久久激情亚洲精品无码?V| 国产精品久久久久久福利漫画| 久久久久人妻精品一区二区三区| 99久久综合国产精品免费| 一本久道久久综合狠狠躁AV| A级毛片无码久久精品免费| 免费观看久久精彩视频| 国产精品久久亚洲不卡动漫| 99国产欧美精品久久久蜜芽| 久久不见久久见免费视频7| 久久综合噜噜激激的五月天| 少妇久久久久久久久久|