• <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:對節(jié)點的操作

            重命名節(jié)點、合并內(nèi)存中的兩個文檔或者將一個文檔中的部分內(nèi)容加入到另一個文檔中

            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

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

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

            使用數(shù)據(jù)
            當(dāng)附加了一些數(shù)據(jù)的節(jié)點上有事件發(fā)生時,已注冊的處理程序?qū)⒈徽{(diào)用,并提供所有必需的信息來相應(yīng)地更新結(jié)構(gòu)

            Part2:對文檔的操作、訪問類型信息和Xerces中的實現(xiàn)方式
            映射到 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); // 設(shè)置編碼方式
             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 節(jié)點是否只包含可以被忽略的空白
            14
            通過 Attr 接口的 schemaTypeInfo 屬性,您還可以獲取一個屬性信息項的屬性類型特性的值 ——即一個屬性的類型。
            在這種映射中,XML Infoset 信息項都映射到其相應(yīng)的 Node ,反之也一樣,一個信息項的每一個屬性都映射到其相應(yīng) Node 的屬性

            自舉——DOMImplementationRegistry 對象,通過使用機制機制,就可以使用對于應(yīng)用程序最合適的實現(xiàn)
            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

            文檔標(biāo)準(zhǔn)化——Document 接口的 normalizeDocument 方法
            通過 DOMConfiguration 配置 normalizeDocument ,以便對文檔執(zhí)行其他操作
             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 對內(nèi)存中的文檔進(jìn)行重新驗證
            為此,首先需要將 DOMConfiguration validate 參數(shù)設(shè)置為 true 。然后需要實現(xiàn)一個 DOMErrorHandler 對象,驗證錯誤將報告給這個對象,再用 error-handler 參數(shù)將這個對象注冊到 Document 上。這與對 SAX 解析器所做的工作很類似。最后,可以通過調(diào)用 normalizeDocument 檢查文檔是否有效。

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

            在 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
            驗證內(nèi)存中的文檔
            欧洲成人午夜精品无码区久久| 久久久久99精品成人片三人毛片 | 精品久久久久中文字幕日本| 久久AV高潮AV无码AV| 国产亚洲欧美精品久久久| 久久青青草原综合伊人| 性做久久久久久久久老女人| 中文字幕乱码人妻无码久久| 久久伊人精品青青草原高清| 久久久久久毛片免费看| 欧美一区二区三区久久综| 精品久久久久久99人妻| 亚洲欧洲日产国码无码久久99| 久久精品成人| 国产亚洲精久久久久久无码| 久久综合伊人77777| 国产精品久久久久久久久鸭| 久久夜色精品国产| 99国内精品久久久久久久| 狠狠色综合网站久久久久久久高清| 91精品国产高清久久久久久91 | 精品久久久久久久久久久久久久久| 国产精品成人久久久| 国产精品99久久精品爆乳| 色综合久久综合中文综合网| 久久精品视频一| 久久久久亚洲AV无码专区网站| …久久精品99久久香蕉国产| 久久综合九色综合网站| 亚洲欧洲精品成人久久曰影片| 国产精品免费久久久久电影网| 99久久人妻无码精品系列| 久久青青草原亚洲av无码app| 超级碰碰碰碰97久久久久| 日本加勒比久久精品| 精品久久久久中文字幕一区| 国产一区二区三精品久久久无广告| 国产三级久久久精品麻豆三级| 久久久噜噜噜久久熟女AA片| 亚洲精品乱码久久久久66| 日韩人妻无码一区二区三区久久|