摘要:函數(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
摘要:設(shè)定的值的時候,即已自動暗示類型。第五章循環(huán)自我重復(fù)的風(fēng)險數(shù)組用于在單一場所存儲多段數(shù)據(jù)數(shù)組的頁碼稱為鍵,索引只是一種形式特殊的鍵,它是數(shù)值鍵存儲在數(shù)組里的數(shù)據(jù)不一定為相同類型并不要求二維數(shù)組具有相同的行數(shù),但是最好保持一致。 ** 簡介 **書名:《Head First JavaScript》中文譯名:《深入淺出JavaScript》著:Michael Morrison編譯:O’R...
摘要:的類型類型創(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 ...
摘要:技術(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,但...
摘要:節(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...
摘要:在基于使用命名空間的文檔求值時,需要使用對象。第四個參數(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...
閱讀 898·2021-10-27 14:19
閱讀 1116·2021-10-15 09:42
閱讀 1540·2021-09-14 18:02
閱讀 747·2019-08-30 13:09
閱讀 2994·2019-08-29 15:08
閱讀 2095·2019-08-28 18:05
閱讀 960·2019-08-26 10:25
閱讀 2789·2019-08-23 16:28