何时,纱窗外,风摇翠竹

常用链接

统计

最新评论

  • 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 阅读(2666) 评论(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 不支持  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: