国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS學習筆記(第18章)(JavaScript與XML)

GT / 953人閱讀

摘要:函數接收三個參數上下文節點表達式和可選的命名空間對象。命名空間對象應該是下面這種字面量的形式。使用樣式表轉換文檔跨瀏覽器使用這個函數接收兩個參數要執行轉換的上下文節點和文檔對象。

本章主要講解了以下四個問題:

1、將XML解析為DOM文檔

跨瀏覽器把XML解析為DOM文檔:

function parseXml(xml){
            var xmldom = null;
            
            if (typeof DOMParser != "undefined"){
                xmldom = (new DOMParser()).parseFromString(xml, "text/xml");
                var errors = xmldom.getElementsByTagName("parsererror");
                if (errors.length){
                    throw new Error("XML parsing error:" + errors[0].textContent);
                }        
            } else if (typeof ActiveXObject != "undefined"){
                xmldom = createDocument();
                xmldom.loadXML(xml);
                if (xmldom.parseError != 0){
                    throw new Error("XML parsing error: " + xmldom.parseError.reason);
                }
            } else {
                throw new Error("No XML parser available.");
            }
            
            return xmldom;
        }
  

這個 parseXml()函數只接收一個參數,即可解析的 XML 字符串。

2、將DOM文檔序列化為XML文檔

跨瀏覽器將DOM文檔序列化為XML文檔:

function serializeXml(xmldom){
           
            if (typeof XMLSerializer != "undefined"){
                return (new XMLSerializer()).serializeToString(xmldom);
            } else if (typeof xmldom.xml != "undefined"){
                return xmldom.xml;
            } else {
                throw new Error("Could not serialize XML DOM.");
            }
        }

這個 serializeXml()函數接收一個參數,即要序列化的 XML DOM 文檔。

3、XPath

跨瀏覽器使用XPath:
重新創建 selectSingleNode()和selectNodes()方法。函數接收三個參數:上下文節點、 XPath表達式和可選的命名空間對象。命名空間對象應該是下面這種字面量的形式。

{
    prefix1: "uri1",
    prefix2: "uri2",
    prefix3: "uri3"
}
 function selectSingleNode(context, expression, namespaces){
            var doc = (context.nodeType != 9 ? context.ownerDocument : context);
            
            if (typeof doc.evaluate != "undefined"){
                var nsresolver = null;
                if (namespaces instanceof Object){
                    nsresolver = function(prefix){
                        return namespaces[prefix];
                    };
                }
                
                var result = doc.evaluate(expression, context, nsresolver, XPathResult.FIRST_ORDERED_NODE_TYPE,null);
                return (result !== null ? result.singleNodeValue : null);
            
            } else if (typeof context.selectSingleNode != "undefined"){

                //create namespace string
                if (namespaces instanceof Object){
                    var ns = "";
                    for (var prefix in namespaces){
                        if (namespaces.hasOwnProperty(prefix)){
                            ns += "xmlns:" + prefix + "="" + namespaces[prefix] + "" ";
                        }
                    }
                    doc.setProperty("SelectionNamespaces", ns);
                }
                return context.selectSingleNode(expression);
            } else {
                throw new Error("No XPath engine found.");
            }
        }
        
var result = selectSingleNode(xmldom.documentElement, "wrox:book/wrox:author", { wrox: "http://www.wrox.com/" });            
alert(serializeXml(result));
function selectNodes(context, expression, namespaces){
            var doc = (context.nodeType != 9 ? context.ownerDocument : context);
            
            if (typeof doc.evaluate != "undefined"){
                var nsresolver = null;
                if (namespaces instanceof Object){
                    nsresolver = function(prefix){
                        return namespaces[prefix];
                    };
                }
                
                var result = doc.evaluate(expression, context, nsresolver, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
                var nodes = new Array();
                
                if (result !== null){
                    for (var i=0, len=result.snapshotLength; i < len; i++){
                        nodes.push(result.snapshotItem(i));
                    }
                }
                
                return nodes;
            } else if (typeof context.selectNodes != "undefined"){

                //create namespace string
                if (namespaces instanceof Object){
                    var ns = "";
                    for (var prefix in namespaces){
                        if (namespaces.hasOwnProperty(prefix)){
                            ns += "xmlns:" + prefix + "="" + namespaces[prefix] + "" ";
                        }
                    }
                    doc.setProperty("SelectionNamespaces", ns);
                }
                var result = context.selectNodes(expression);
                var nodes = new Array();
                
                for (var i=0,len=result.length; i < len; i++){
                    nodes.push(result[i]);
                }
                
                return nodes;
            } else {
                throw new Error("No XPath engine found.");
            }
        }
        
var result = selectNodes(xmldom.documentElement, "wrox:book/wrox:author", { wrox: "http://www.wrox.com/" });            
alert(result.length); 
4、使用XSLT樣式表轉換XML文檔

跨瀏覽器使用XSLT:

function transform(context, xslt){
                if (typeof XSLTProcessor != "undefined"){
                    var processor = new XSLTProcessor();
                    processor.importStylesheet(xslt);
            
                    var result = processor.transformToDocument(context);
                    return (new XMLSerializer()).serializeToString(result);
            
                } else if (typeof context.transformNode != "undefined") {
                    return context.transformNode(xslt);
                } else {
                    throw new Error("No XSLT processor available.");
                }
            }

這個 transform()函數接收兩個參數:要執行轉換的上下文節點和 XSLT 文檔對象。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106137.html

相關文章

  • 《Head First JavaScript》讀書筆記

    摘要:設定的值的時候,即已自動暗示類型。第五章循環自我重復的風險數組用于在單一場所存儲多段數據數組的頁碼稱為鍵,索引只是一種形式特殊的鍵,它是數值鍵存儲在數組里的數據不一定為相同類型并不要求二維數組具有相同的行數,但是最好保持一致。 ** 簡介 **書名:《Head First JavaScript》中文譯名:《深入淺出JavaScript》著:Michael Morrison編譯:O’R...

    ztyzz 評論0 收藏0
  • JS學習筆記19)(E4X)

    摘要:的類型類型創建對象的方法調用構造函數使用字面量將數據直接指定給一個變量。表示解析器應該忽略標記中的處理指令。這三個設置會影響對傳入到構造函數中的字符串以及字面量的解析。 showImg(https://segmentfault.com/img/bVbvHVV?w=737&h=593); 1、E4X的類型 1.1 XML類型 1、創建XML對象的方法: (1)調用構造函數: var x ...

    lijinke666 評論0 收藏0
  • AjaxComet-JavaScript高級程序設計21讀書筆記(1)

    摘要:技術的核心是對象即。收到響應后,響應的數據會自動填充對象的屬性,相關的屬性有作為響應主體被返回的文本。收到響應后,一般來說,會先判斷是否為,這是此次請求成功的標志。中的版本會將設置為,而中原生的則會將規范化為。會在取得時報告的值為。 Ajax(Asynchronous Javascript + XML)技術的核心是XMLHttpRequest對象,即: XHR。雖然名字中包含XML,但...

    imingyu 評論0 收藏0
  • JS學習筆記10)(DOM之節點層次)

    摘要:節點層次是針對和文檔的一個。每一段標記都可以通過一個節點來表示。用于表明節點的類型。返回新增的這個節點。將節點插入到節點列表指定的位置。節點有以下的特性為,為指向元素,指向元素。提供了對元素的標簽名,子節點和特性的訪問。   節點層次 DOM是針對HTML和XML文檔的一個API。DOM描繪了一個層次化的節點樹,允許開發人員添加、移除和修改頁面的某一部分。 DOM可以將任何HTML或X...

    kamushin233 評論0 收藏0
  • 高程3總結#18JavaScriptXML

    摘要:在基于使用命名空間的文檔求值時,需要使用對象。第四個參數的取值類型是下列常量之一,返回與表達式匹配的數據類型。,返回字符串值。這是最常用的結果類型。集合中節點的次序與它們在文檔中的次序一致。 JavaScript與XML 瀏覽器對XML DOM的支持 DOM2級核心 在通過JavaScript處理XML時,通常只使用參數root,因為這個參數指定的是XML DOM文檔元素的標簽名 v...

    gaosboy 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<