成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS學(xué)習(xí)筆記(第18章)(JavaScript與XML)

GT / 959人閱讀

摘要:函數(shù)接收三個參數(shù)上下文節(jié)點(diǎn)表達(dá)式和可選的命名空間對象。命名空間對象應(yīng)該是下面這種字面量的形式。使用樣式表轉(zhuǎn)換文檔跨瀏覽器使用這個函數(shù)接收兩個參數(shù)要執(zhí)行轉(zhuǎn)換的上下文節(jié)點(diǎn)和文檔對象。

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

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()函數(shù)只接收一個參數(shù),即可解析的 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()函數(shù)接收一個參數(shù),即要序列化的 XML DOM 文檔。

3、XPath

跨瀏覽器使用XPath:
重新創(chuàng)建 selectSingleNode()和selectNodes()方法。函數(shù)接收三個參數(shù):上下文節(jié)點(diǎn)、 XPath表達(dá)式和可選的命名空間對象。命名空間對象應(yīng)該是下面這種字面量的形式。

{
    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樣式表轉(zhuǎn)換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()函數(shù)接收兩個參數(shù):要執(zhí)行轉(zhuǎn)換的上下文節(jié)點(diǎn)和 XSLT 文檔對象。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106137.html

相關(guān)文章

  • 《Head First JavaScript》讀書筆記

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

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

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

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

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

    imingyu 評論0 收藏0
  • JS學(xué)習(xí)筆記10)(DOM之節(jié)點(diǎn)層次)

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

    kamushin233 評論0 收藏0
  • 高程3總結(jié)#18JavaScriptXML

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

    gaosboy 評論0 收藏0

發(fā)表評論

0條評論

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