摘要:在不給這個(gè)方法傳遞參數(shù)的情況下,它會(huì)返回所有后代節(jié)點(diǎn)與使用相同,而傳遞一個(gè)名稱作為參數(shù)則可以限制結(jié)果。,表示解析器應(yīng)該忽略標(biāo)記中的處理指令。數(shù)據(jù)序列化相關(guān)的設(shè)置,表示在序列化時(shí),每次縮進(jìn)的空格數(shù)量。
E4X E4X的類型
E4X定義了幾個(gè)新的全局類型
XML,XML結(jié)構(gòu)中的任何一個(gè)獨(dú)立的部分
XMLList,XML對(duì)象的集合
Namespace,命名空間前綴與命名空間URI之間的映射
QName,由內(nèi)部名稱和命名空間URI組成的一個(gè)限定名
XMl類型
創(chuàng)建XML對(duì)象的方式不止一種,第一種方式是像下面這樣調(diào)用其構(gòu)造函數(shù)
var x=new XML();
這行代碼會(huì)創(chuàng)建一個(gè)空的XML對(duì)象,我們能夠向其中添加數(shù)據(jù),也可以向構(gòu)造函數(shù)中傳入一個(gè)XML字符串
var x = new XML(""); Nicholas " + "Zakas
使用XML字面量將XML數(shù)據(jù)直接指定給一個(gè)變量,XML字面量就是嵌入到JavaScript代碼中的XML代碼
var employee =XMLList類型; Nicholas C. Zakas
XMLList類型表現(xiàn)XML對(duì)象的有序集合,XMLList的DOM對(duì)等類型是NodeList,但與Node和NodeList之間的區(qū)別相比,XML和XMLList之間的區(qū)別是有意設(shè)計(jì)的比較小的
var list=new XMLList();
與XML構(gòu)造函數(shù)一樣,也可以向其中傳入一個(gè)待解析的XML字符串,這個(gè)字符串可以不止包含一個(gè)文檔元素
var list=new XMLList("- ");
還可以使用加號(hào)操作符來組合兩個(gè)或多個(gè)XML對(duì)象,從而創(chuàng)建XMLList對(duì)象
var list=- +
- ;
同樣的組合操作也可以使用特殊的<>和>語法來完成,此時(shí)不適用加號(hào)操作符
var list=<>Namespace類型- >
要?jiǎng)?chuàng)建Namespace對(duì)象,可以像下面這樣使用Namespace構(gòu)造函數(shù)
var ns=new Namespace();
而傳入U(xiǎn)RI或前綴加URI,就可以初始化Namespace對(duì)象
var ns = new Namespace("http://www.wrox.com/"); //沒有前綴的命名空間 var wrox = new Namespace("wrox", "http://www.wrox.com/"); //wrox 命名空間
可以使用prefix和uri屬性類取得Namespace對(duì)象中的信息
alert(ns.uri); //"http://www.wrox.com/" alert(ns.prefix); //undefined alert(wrox.uri); //"http://www.wrox.com/" alert(wrox.prefix); //"wrox"QName類型
向QName構(gòu)造函數(shù)中傳入名稱或Namespace對(duì)象和名稱,可以手工創(chuàng)建新的QName對(duì)象
var wrox = new Namespace("wrox", "http://www.wrox.com/"); var wroxMessage = new QName(wrox, "message"); //表示"wrox:message"
創(chuàng)建QName對(duì)象之后,可以訪問它的兩個(gè)屬性,uri和localName,其中uri屬性返回在創(chuàng)建對(duì)象時(shí)指定的命名空間URI,而localName屬性返回限定名中的內(nèi)部名稱
alert(wroxMessage.uri); //"http://www.wrox.com/" alert(wroxMessage.localName); //"message"一般用法 訪問特性
訪問特性可以使用點(diǎn)語法,為了區(qū)分特性名與子元素的標(biāo)簽名,必須在名稱前面加上一個(gè)@字符
var employees =其他節(jié)點(diǎn)類型; alert(employees.employee[0].@position); //"Software Engineer" Nicholas C. Zakas Jim Smith
默認(rèn)情況下,E4X不會(huì)解析注釋或處理指令,因此這些部分不會(huì)出現(xiàn)在最終的對(duì)象層次中,如果想讓解析器解析這些部分,可以設(shè)置XML構(gòu)造函數(shù)的兩個(gè)屬性
XML.ignoreComments = false; XML.ignoreProcessingInstructions = false;
設(shè)置了兩個(gè)屬性之后,E4X就會(huì)將注釋和處理指令解析到XML結(jié)構(gòu)中
使用nodeKind()方法可以得到XML對(duì)象表示的類型,該訪問可能會(huì)返回"text"、"element"、"comment"、"processinginstruction"、"attribute"
只取得特定類型的節(jié)點(diǎn)
attribute(),返回XML對(duì)象的所有特性
comments(),返回XML對(duì)象的所有子注釋節(jié)點(diǎn)
elements(),返回XML對(duì)象的所有子元素,可以通過提供元素的tagName來過濾想要的返回的結(jié)果
processingInstructions(),返回XML對(duì)象的所有處理指令,可以通過提供處理指令的name來過濾想要的返回的結(jié)果
text(),返回XML對(duì)象的所有文本子節(jié)點(diǎn)
使用 hasSimpleContent() 和 hasComplexContent() 方法,可以確定 XML 對(duì)象中是只包含文本,還是包含更復(fù)雜的內(nèi)容。如果 XML 對(duì)象中只包含子文本節(jié)點(diǎn),則前一個(gè)方法會(huì)返回 true ;如果 XML 對(duì)象的子節(jié)點(diǎn)中有任何非文本節(jié)點(diǎn),則后一個(gè)方法返回 true 。
alert(employees.employee[0].hasComplexContent()); //true alert(employees.employee[0].hasSimpleContent()); //false alert(employees.employee[0].name.hasComplexContent()); //false alert(employees.employee[0].name.hasSimpleContent()); //true查詢
同樣的查詢可以使用 descendants() 方法來完成。在不給這個(gè)方法傳遞參數(shù)的情況下,它會(huì)返回所有后代節(jié)點(diǎn)(與使用 ..* 相同),而傳遞一個(gè)名稱作為參數(shù)則可以限制結(jié)果。
var allDescendants = employees.descendants(); //所有后代節(jié)點(diǎn) var allNames = employees.descendants("name"); //后代中的所有元素
還可以取得所有后代元素中的所有特性,方法是使用下列任何一行代碼。
var allAttributes = employees..@*; //取得所有后代元素中的所有特性 var allAttributes2 = employees.descendants("@*"); //同上
與限制結(jié)果中的后代元素一樣,也可以通過用完整的特性名來替換星號(hào)達(dá)到過濾特性的目的。
var allAttributes = employees..@position; //取得所有 position 特性 var allAttributes2 = employees.descendants("@position"); //同上構(gòu)建和操作XML
使用花括號(hào),可以將JavaScript變量嵌入到字面量中的任意位置
var tagName = "color"; var color = "red"; var xml = <{tagName}>{color}{tagName}>; alert(xml.toXMLString()); //"red
類似DOM的方法
appendChild(child),將給定的 child 作為子節(jié)點(diǎn)添加到 XMLList 的末尾。
copy(),返回 XML 對(duì)象副本。
insertChildAfter(refNode, child),將 child 作為子節(jié)點(diǎn)插入到 XMLList 中 refNode 的后面。
insertChildBefore(refNode, child),將 child 作為子節(jié)點(diǎn)插入到 XMLList 中 refNode 的前面。
prependChild(child),將給定的 child 作為子節(jié)點(diǎn)添加到 XMLList 的開始位置。
replace(propertyName, value),用 value 值替換名為 propertyName 的屬性,這個(gè)屬性可能是一個(gè)元素,也可能是一個(gè)特性。
setChildren(children),用 children 替換當(dāng)前所有的子元素, children 可以是 XML 對(duì)象,也可是 XMLList 對(duì)象。
var employees =解析和序列化; employees.appendChild( Nicholas C. Zakas Jim Smith ); employees.prependChild( Benjamin Anderson ); employees.insertChildBefore(employees.child(2), Michael Johnson ); employees.setChildren( Margaret Jones + Richard McMichael ); Rebecca Smith
與XML解析相關(guān)的設(shè)置有三個(gè)
ignoreComments,表示解析器應(yīng)該忽略標(biāo)記中的注釋。默認(rèn)設(shè)置為 true 。
ignoreProcessingInstructions,表示解析器應(yīng)該忽略標(biāo)記中的處理指令。默認(rèn)設(shè)置為 true 。
ignoreWhitespace ,表示解析器應(yīng)該忽略元素間的空格,而不是創(chuàng)建表現(xiàn)這些空格的文本節(jié)點(diǎn)。默認(rèn)設(shè)置為 true 。
XML數(shù)據(jù)序列化相關(guān)的設(shè)置
prettyIndent ,表示在序列化 XML 時(shí),每次縮進(jìn)的空格數(shù)量。默認(rèn)值為 2。
prettyPrinting,表示應(yīng)該以方便人類認(rèn)讀的方式輸出 XML,即每個(gè)元素重起一行,而且子元素都要縮進(jìn)。默認(rèn)設(shè)置為 true 。
命名空間
通過使用setNamespace()并傳入Namespace對(duì)象,也可以給定元素設(shè)置命名空間
var messages =其他變化; messages.setNamespace(new Namespace("wrox", "http://www.wrox.com/")); Hello world!
引入了for-each-in循環(huán),以便迭代遍歷每一個(gè)屬性并返回屬性的值
var employees =前面啟用E4X; for each (var child in employees){ alert(child.toXMLString()); } Nicholas C. Zakas Jim Smith
要想完整地啟用E4X,需要將
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/98034.html
摘要:的類型類型創(chuàng)建對(duì)象的方法調(diào)用構(gòu)造函數(shù)使用字面量將數(shù)據(jù)直接指定給一個(gè)變量。表示解析器應(yīng)該忽略標(biāo)記中的處理指令。這三個(gè)設(shè)置會(huì)影響對(duì)傳入到構(gòu)造函數(shù)中的字符串以及字面量的解析。 showImg(https://segmentfault.com/img/bVbvHVV?w=737&h=593); 1、E4X的類型 1.1 XML類型 1、創(chuàng)建XML對(duì)象的方法: (1)調(diào)用構(gòu)造函數(shù): var x ...
摘要:基本概念語法區(qū)分大小寫,中的一切變量函數(shù)名和操作符都區(qū)分大小寫。要將一個(gè)值轉(zhuǎn)換成對(duì)應(yīng)的值,可以調(diào)用類型包括整數(shù)和浮點(diǎn)數(shù)值,基本數(shù)值字面量格式是十進(jìn)制整數(shù),除了十進(jìn)制外還有八進(jìn)制十六進(jìn)制。八進(jìn)制第一位必須是,十六進(jìn)制第一位必須是。 基本概念 語法 區(qū)分大小寫,ECMAScript中的一切(變量、函數(shù)名和操作符)都區(qū)分大小寫。函數(shù)名不能使用typeof,因?yàn)樗且粋€(gè)關(guān)鍵字,但typeOf...
摘要:對(duì)象的核心對(duì)象是,它表示瀏覽器的一個(gè)實(shí)例。而和則表示該容器中頁面視圖區(qū)的大小。在中,與返回相同的值,即視口大小而非瀏覽器窗口大小。第三個(gè)參數(shù)是一個(gè)逗號(hào)分隔的設(shè)置字符串,表示在新窗口中都顯示哪些特性。這應(yīng)該是用戶打開窗口后的第一個(gè)頁面 BOM window對(duì)象 BOM的核心對(duì)象是window,它表示瀏覽器的一個(gè)實(shí)例。在瀏覽器中,window對(duì)象有雙重角色,它既是通過JavaScript訪...
摘要:匿名函數(shù)可以用來模仿塊級(jí)作用域來避免這個(gè)問題這里是塊級(jí)作用域代碼定義并立即調(diào)用了一個(gè)匿名函數(shù),將函數(shù)聲明包含在一對(duì)圓括號(hào)中,表示它實(shí)際上是一個(gè)函數(shù)表達(dá)式,而緊隨其后的另一對(duì)圓括號(hào)會(huì)立即調(diào)用這個(gè)函數(shù)。 函數(shù)表達(dá)式 遞歸 遞歸函數(shù)是在一個(gè)函數(shù)通過名字調(diào)用自身的情況下構(gòu)成的 function factrial(num){ if(num
摘要:簡(jiǎn)介簡(jiǎn)史誕生于年,當(dāng)時(shí)主要負(fù)責(zé)表單的輸入驗(yàn)證。實(shí)現(xiàn)一個(gè)完整的由三部分組成核心文檔對(duì)象模型瀏覽器對(duì)象模型就是對(duì)實(shí)現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個(gè)方面內(nèi)容的語言的描述。把整個(gè)頁面映射為一個(gè)多層節(jié)點(diǎn)結(jié)構(gòu)。由萬維網(wǎng)聯(lián)盟規(guī)劃。主要目標(biāo)是映射文檔的結(jié)構(gòu)。 JavaScript簡(jiǎn)介 JavaScript簡(jiǎn)史 JavaScript誕生于1995年,當(dāng)時(shí)主要負(fù)責(zé)表單的輸入驗(yàn)證。 如果沒有表單驗(yàn)證的功能,填入信息之...
閱讀 3295·2021-11-23 09:51
閱讀 948·2021-09-03 10:30
閱讀 3221·2021-08-31 09:40
閱讀 3282·2019-08-30 14:22
閱讀 907·2019-08-30 14:09
閱讀 2907·2019-08-30 13:21
閱讀 3244·2019-08-28 18:03
閱讀 2864·2019-08-26 13:44