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

資訊專欄INFORMATION COLUMN

高程3總結(jié)#第19章E4X

DandJ / 2460人閱讀

摘要:在不給這個方法傳遞參數(shù)的情況下,它會返回所有后代節(jié)點(diǎn)與使用相同,而傳遞一個名稱作為參數(shù)則可以限制結(jié)果。,表示解析器應(yīng)該忽略標(biāo)記中的處理指令。數(shù)據(jù)序列化相關(guān)的設(shè)置,表示在序列化時,每次縮進(jìn)的空格數(shù)量。

E4X E4X的類型

E4X定義了幾個新的全局類型

XML,XML結(jié)構(gòu)中的任何一個獨(dú)立的部分

XMLList,XML對象的集合

Namespace,命名空間前綴與命名空間URI之間的映射

QName,由內(nèi)部名稱和命名空間URI組成的一個限定名

XMl類型

創(chuàng)建XML對象的方式不止一種,第一種方式是像下面這樣調(diào)用其構(gòu)造函數(shù)

var x=new XML();

這行代碼會創(chuàng)建一個空的XML對象,我們能夠向其中添加數(shù)據(jù),也可以向構(gòu)造函數(shù)中傳入一個XML字符串

var x = new XML("Nicholas " + "Zakas");

使用XML字面量將XML數(shù)據(jù)直接指定給一個變量,XML字面量就是嵌入到JavaScript代碼中的XML代碼

var employee = Nicholas C. Zakas;

XMLList類型

XMLList類型表現(xiàn)XML對象的有序集合,XMLList的DOM對等類型是NodeList,但與Node和NodeList之間的區(qū)別相比,XML和XMLList之間的區(qū)別是有意設(shè)計的比較小的

var list=new XMLList();

與XML構(gòu)造函數(shù)一樣,也可以向其中傳入一個待解析的XML字符串,這個字符串可以不止包含一個文檔元素

var list=new XMLList("");

還可以使用加號操作符來組合兩個或多個XML對象,從而創(chuàng)建XMLList對象

var list=+;

同樣的組合操作也可以使用特殊的<>和語法來完成,此時不適用加號操作符

var list=<>

Namespace類型

要創(chuàng)建Namespace對象,可以像下面這樣使用Namespace構(gòu)造函數(shù)

var ns=new Namespace();

而傳入URI或前綴加URI,就可以初始化Namespace對象

var ns = new Namespace("http://www.wrox.com/"); //沒有前綴的命名空間
var wrox = new Namespace("wrox", "http://www.wrox.com/"); //wrox 命名空間

可以使用prefix和uri屬性類取得Namespace對象中的信息

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對象和名稱,可以手工創(chuàng)建新的QName對象

var wrox = new Namespace("wrox", "http://www.wrox.com/");
var wroxMessage = new QName(wrox, "message"); //表示"wrox:message"

創(chuàng)建QName對象之后,可以訪問它的兩個屬性,uri和localName,其中uri屬性返回在創(chuàng)建對象時指定的命名空間URI,而localName屬性返回限定名中的內(nèi)部名稱

alert(wroxMessage.uri); //"http://www.wrox.com/"
alert(wroxMessage.localName); //"message"

一般用法 訪問特性

訪問特性可以使用點(diǎn)語法,為了區(qū)分特性名與子元素的標(biāo)簽名,必須在名稱前面加上一個@字符

var employees = 
    
      Nicholas C. Zakas


  Jim Smith

;
alert(employees.employee[0].@position); //"Software Engineer"

其他節(jié)點(diǎn)類型

默認(rèn)情況下,E4X不會解析注釋或處理指令,因此這些部分不會出現(xiàn)在最終的對象層次中,如果想讓解析器解析這些部分,可以設(shè)置XML構(gòu)造函數(shù)的兩個屬性

XML.ignoreComments = false;
XML.ignoreProcessingInstructions = false;

設(shè)置了兩個屬性之后,E4X就會將注釋和處理指令解析到XML結(jié)構(gòu)中

使用nodeKind()方法可以得到XML對象表示的類型,該訪問可能會返回"text"、"element"、"comment"、"processinginstruction"、"attribute"

只取得特定類型的節(jié)點(diǎn)

attribute(),返回XML對象的所有特性

comments(),返回XML對象的所有子注釋節(jié)點(diǎn)

elements(),返回XML對象的所有子元素,可以通過提供元素的tagName來過濾想要的返回的結(jié)果

processingInstructions(),返回XML對象的所有處理指令,可以通過提供處理指令的name來過濾想要的返回的結(jié)果

text(),返回XML對象的所有文本子節(jié)點(diǎn)

使用 hasSimpleContent() 和 hasComplexContent() 方法,可以確定 XML 對象中是只包含文本,還是包含更復(fù)雜的內(nèi)容。如果 XML 對象中只包含子文本節(jié)點(diǎn),則前一個方法會返回 true ;如果 XML 對象的子節(jié)點(diǎn)中有任何非文本節(jié)點(diǎn),則后一個方法返回 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() 方法來完成。在不給這個方法傳遞參數(shù)的情況下,它會返回所有后代節(jié)點(diǎn)(與使用 ..* 相同),而傳遞一個名稱作為參數(shù)則可以限制結(jié)果。

var allDescendants = employees.descendants(); //所有后代節(jié)點(diǎn)
var allNames = employees.descendants("name"); //后代中的所有元素

還可以取得所有后代元素中的所有特性,方法是使用下列任何一行代碼。

var allAttributes = employees..@*; //取得所有后代元素中的所有特性
var allAttributes2 = employees.descendants("@*"); //同上

與限制結(jié)果中的后代元素一樣,也可以通過用完整的特性名來替換星號達(dá)到過濾特性的目的。

var allAttributes = employees..@position; //取得所有 position 特性
var allAttributes2 = employees.descendants("@position"); //同上

構(gòu)建和操作XML

使用花括號,可以將JavaScript變量嵌入到字面量中的任意位置

var tagName = "color";
var color = "red";
var xml = <{tagName}>{color};
alert(xml.toXMLString()); //"red

類似DOM的方法

appendChild(child),將給定的 child 作為子節(jié)點(diǎn)添加到 XMLList 的末尾。

copy(),返回 XML 對象副本。

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 的屬性,這個屬性可能是一個元素,也可能是一個特性。

setChildren(children),用 children 替換當(dāng)前所有的子元素, children 可以是 XML 對象,也可是 XMLList 對象。

var employees = 
    
      Nicholas C. Zakas


  Jim Smith

;
employees.appendChild(
                      Benjamin Anderson
                      );
                      employees.prependChild(
                      Michael Johnson
                      );
                      employees.insertChildBefore(employees.child(2),
  
    Margaret Jones
);
employees.setChildren(
                      Richard McMichael
                       +
                      
                      Rebecca Smith
                      );

解析和序列化

與XML解析相關(guān)的設(shè)置有三個

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 時,每次縮進(jìn)的空格數(shù)量。默認(rèn)值為 2。

prettyPrinting,表示應(yīng)該以方便人類認(rèn)讀的方式輸出 XML,即每個元素重起一行,而且子元素都要縮進(jìn)。默認(rèn)設(shè)置為 true 。

命名空間

通過使用setNamespace()并傳入Namespace對象,也可以給定元素設(shè)置命名空間

var messages = 
    Hello world!
;
messages.setNamespace(new Namespace("wrox", "http://www.wrox.com/"));

其他變化

引入了for-each-in循環(huán),以便迭代遍歷每一個屬性并返回屬性的值

var employees = 
    
      Nicholas C. Zakas


  Jim Smith

;
for each (var child in employees){
  alert(child.toXMLString());
}

前面啟用E4X

要想完整地啟用E4X,需要將

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

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

相關(guān)文章

  • 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
  • 高程3總結(jié)#3基本概念

    摘要:基本概念語法區(qū)分大小寫,中的一切變量函數(shù)名和操作符都區(qū)分大小寫。要將一個值轉(zhuǎn)換成對應(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,因為它是一個關(guān)鍵字,但typeOf...

    Rindia 評論0 收藏0
  • 高程3總結(jié)#8BOM

    摘要:對象的核心對象是,它表示瀏覽器的一個實例。而和則表示該容器中頁面視圖區(qū)的大小。在中,與返回相同的值,即視口大小而非瀏覽器窗口大小。第三個參數(shù)是一個逗號分隔的設(shè)置字符串,表示在新窗口中都顯示哪些特性。這應(yīng)該是用戶打開窗口后的第一個頁面 BOM window對象 BOM的核心對象是window,它表示瀏覽器的一個實例。在瀏覽器中,window對象有雙重角色,它既是通過JavaScript訪...

    MASAILA 評論0 收藏0
  • 高程3總結(jié)#7函數(shù)表達(dá)式

    摘要:匿名函數(shù)可以用來模仿塊級作用域來避免這個問題這里是塊級作用域代碼定義并立即調(diào)用了一個匿名函數(shù),將函數(shù)聲明包含在一對圓括號中,表示它實際上是一個函數(shù)表達(dá)式,而緊隨其后的另一對圓括號會立即調(diào)用這個函數(shù)。 函數(shù)表達(dá)式 遞歸 遞歸函數(shù)是在一個函數(shù)通過名字調(diào)用自身的情況下構(gòu)成的 function factrial(num){ if(num

    sevi_stuo 評論0 收藏0
  • 高程3總結(jié)#1JavaScript簡介

    摘要:簡介簡史誕生于年,當(dāng)時主要負(fù)責(zé)表單的輸入驗證。實現(xiàn)一個完整的由三部分組成核心文檔對象模型瀏覽器對象模型就是對實現(xiàn)該標(biāo)準(zhǔn)規(guī)定的各個方面內(nèi)容的語言的描述。把整個頁面映射為一個多層節(jié)點(diǎn)結(jié)構(gòu)。由萬維網(wǎng)聯(lián)盟規(guī)劃。主要目標(biāo)是映射文檔的結(jié)構(gòu)。 JavaScript簡介 JavaScript簡史 JavaScript誕生于1995年,當(dāng)時主要負(fù)責(zé)表單的輸入驗證。 如果沒有表單驗證的功能,填入信息之...

    betacat 評論0 收藏0

發(fā)表評論

0條評論

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