何時,紗窗外,風搖翠竹

          常用鏈接

          統計

          最新評論

          • 1.?re: 慎用AJAX框架
          • AJAX是中國技術領域的紅燈區。。想爽,但又怕潛伏著危險。。。
          • --阿斯頓飛
          • 2.?re: 慎用AJAX框架
          • 評論內容較長,點擊標題查看
          • --夏如嘏
          • 3.?re: 慎用AJAX框架
          • ajax 要懂的原理,同意樓主,框架慎用
          • --驕傲
          • 4.?re: 慎用AJAX框架
          • @讀書、思考、生活
            2、bug滿天飛,那就說明是水平不到家
            您的水平能高到沒有bug?
          • --樓主
          • 5.?re: 慎用AJAX框架
          • 只要你懂xmlhttp,為什么非要用ajax呢,我從2000年開始使用xmlhttp,ajax剛出來的時候看了一眼,冷笑一聲。所以爭論沒有意義,到處都是新瓶裝老酒的故事
          • --挨踢的貨

          使用E4X用簡單高效的方式操作XML

          ??? 要沒用過E4X,就不知道用這東西處理XML是多簡單好用!過去在Java中一直是用一些用熟了的組件操作XML,這幾天用Actionscript才發現了這個好東西,真是相見恨晚啊,一定要和大家分享一下。

          1. 從Javascript到E4X

          ?? E4X的全稱是 ECMAScript for XML。

          ?? 這里就要先介紹一下ECMAScript,ECMA(歐洲計算機工業協會,European Computer Manufacturers Association)是個標準化組織,JavaScript標準就是由它負責制定的,簡單一點說,ECMAScript就是ECMA制定的Javascript標準。

          ?? JavaScript作為一個優秀的腳本語言,從最早Netscape公司提交JavaScript給ECMA制定為標準(ECMA-262)至今得到了長足的發展,目前最新版本也是我們用的最廣泛的99年末制定的第三版。但大家都知道XML是98年才開始有W3C標準的,對于XML這個剛剛開始竄紅的事物,在ECMAScript第三版中并沒有對JavaScript操作XML進行任何的規范。沒有規范,自然是百花齊放,比如我們用的最多微軟的MSXML控件,就是JScript中基于DOM來操作XML的一種方式。這時就要說到Bea了,這個在當年還不怎么入流卻獨具慧眼的企業,精心開發了一套簡單易用的XML操作模型, 正是看到JavaScript標準中這塊有空白,在2002年的時候Bea就將這套有非常獨到之處的提交給EMCA,作為在Javascript中操作XML的擴展方案,這就是E4X(ECMAScript for XML)。隨后在眾多廠商參與修繕之后形成了ECMA-357標準,目前最新的是2005年12月制定的第二版。關于這二者的歷史及標準的具體內容,可以參考EMCA的資料:

          ? ECMAScript:??? http://www.ecma-international.org/publications/standards/Ecma-262.htm
          ? E4X:?????????????????http://www.ecma-international.org/publications/standards/Ecma-357.htm

          2. E4X簡介
          ??
          ??? 和傳統的操作方式比,E4X最大的特點就是語法簡單,直觀,而且高效。這里不做系統的介紹,只用Actionscript 3 語言舉幾個簡單的例子,給大家一點直觀的印象(因為E4X是個標準,在不同語言中的用法基本都是一樣的)。

          ???創建XML,直接創建即可:?
          ??????? var x = new XML();
          ??????? var x = new XML("<root/>");

          ???賦值, 直接把XML代碼段(注意不是String對象哦)賦給變量就可以了:??
          ??????? x = <gamescore><username>yourname</username><score>90</score><other><userinfo age="15" gender="man">I am good player</userinfo></other></gamescore>;???????

          ???子節點, 用操作符點".", ["元素名"]進行操作, 比如:
          ???????? x.newelement = <newelement/>; //會為<gamescore>添加一個<newelement/>的子節點
          ???????? x["username"] = "Tom";??????? //<username>yourname</username>中yourname的變成Tom
          ???????? x["element" + i ] = i;??????? // i是一個變量

          ????元素屬性,用"@"符號代表:
          ??????? x.@version = "1.0";???? //為<gamescore>添加一個屬性version,<gamescore version="1.0">

          ???在查詢方面,E4X的簡單強大體現的十分突出。操作符".."代表當前節點下的所有層次, 通配符"*"代表所有節點,"(條件)"表達式可以對查詢的結果用括號中的條件進行過濾等等; 比如:??????
          ????
          ????? //查詢gamescore所有層次的子節點下屬性age的值為15的<userinfo>節點。
          ?????? var res:XMLList = gamescore..userinfo.( @age == 15 );
          ?
          ?????? //用正則表達式做查詢條件
          ?????? var res:XMLList = gamescore.other.userinfo.( /^[0123456789].*/.test(@age) );

          ?? 從這幾個簡單的例子中,可以看到通過直接把XML內容作為操作對象,以及使用 ".", ".." 和 "@" 等便捷的訪問操作符,大大的簡化了xml操作的復雜度,是我們可以用一種非常直觀的方式操作XML, 讓那些畫蛇添足的封裝操作XML的技術都見鬼去吧,我們可以用最直接的方式去操作XML了。

          3. E4X現狀
          ?? 前面介紹了E4X是Javascript操作XML的擴展標準,根據EMCA官方網站的介紹,E4X也將在下一個版本中并入ECMAScript。目前來說,Javascript對E4X標準的實現還比較有限,只有部分瀏覽器的高版本能支持E4X(比如Firefox 1.5以上)。但E4X作為一個優秀操作XML的解決方案,已經被眾多新興的編程語言接受和實現,最典型的便是類似于Javascript的用于Flash編程的Actionscript 3.0。在Java領域,BEA WebLogic 的內建JS引擎,Java 6 內置的腳本引擎 Rhino 也都實現了E4X。毫無疑問,E4X這把XML編程的利器,將會被越來越多的語言、產品支持。

          posted on 2007-03-07 17:33 weidy 閱讀(2681) 評論(3)  編輯  收藏 所屬分類: WEB & AJAX

          評論

          # re: 使用E4X用簡單高效的方式操作XML 2007-03-07 18:39 dennis

          E4X是02年bea等提交的一個ECMAScript擴展標準,目前在瀏覽器端好像只有firefox2.0支持,ActionScript倒是搶先了  回復  更多評論   

          # re: 使用E4X用簡單高效的方式操作XML 2007-03-08 10:39 BeanSoft

          可憐, IE 又不給支持了, 要支持也只能再 Vista 里用 IE 8.0 了...  回復  更多評論   

          # re: 使用E4X用簡單高效的方式操作XML 2007-04-10 19:12 kk

          ie 不支持  回復  更多評論   

          主站蜘蛛池模板: 都江堰市| 定南县| 伊春市| 绥滨县| 垣曲县| 武宁县| 闸北区| 蒙城县| 中方县| 大丰市| 陈巴尔虎旗| 马关县| 龙游县| 廊坊市| 中方县| 河东区| 东山县| 山东| 昌宁县| 榆社县| 景德镇市| 阿克陶县| 齐河县| 璧山县| 化德县| 吉安县| 宜兰市| 西乌| 调兵山市| 长沙市| 石门县| 金溪县| 武宣县| 绥宁县| 金坛市| 临西县| 马龙县| 新沂市| 漾濞| 兰考县| 凤山市|