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