e4x 解析xml

E4X(ECMAScript for XML)增强了JavaScript对XML的支持,旨在简化XML文档的处理,避免依赖DOM。它通过重用JavaScript运算符实现XML的创建、操作和导航。E4X提供了一种高效的方式创建和操作XML对象,适用于移动应用程序,具有易学易用的特点。本文通过示例展示了如何使用E4X创建XML对象、访问数据、添加子节点、修改内容、删除节点以及执行计算等操作。
摘要由CSDN通过智能技术生成

E4X 增加了 JavaScript 程序语言对 XML 的支持,XML 作为在应用程序和平台之间交换文档和数据的通用方法,得到了广泛认可。这种认可直接使 XML 成为解决共享文档和数据的互操作性问题的有效方法。XML 结构组件的灵活性促成了它强大丰富的功能。E4X 使 XML 的结构组件的使用更加方便,因此大大增加了灵活性。

充分利用本文的知识

本文讨论了 E4X 的基本原理,并加深了对已经熟悉的 XML 数据结构和 JavaScript 语言的理解。

E4X 的目的是简化编写 XML 的 JavaScript 代码,是一个与 XML 节点和属性交互的高效的、强大的工具。E4X 的主要目标是为 JavaScript 开发人员提供一种不依靠文档对象模型(Document Object Model,DOM)处理 XML 文档的简单高效的方法。

JavaScript 语言使用 E4X 实用程序为全局对象传递新属性。反过来,XML 对象的很多属性在 E4X 的序列化和分析函数中是有用的。E4X 重用现有的 JavaScript 运算符(用于 XML 的创建、操作及导航)。

E4X 开发需要的时间很短,而且容易掌握。这些优点可以使读、写操作和相关运算变得简单高效。因此产生的简便性简化了代码编写,方便代码的修改并且缩短了代码的部署周期。另外,灵活敏捷的 E4X 技术是为日益重要的移动应用程序量身定做的。

为了说明 E4X 的功能和灵活性,我将一个音乐目录作为主要输入源,描述处理 XML 数据所使用的主要特征。本文中的大多数的例子基于 清单 1 中的 XML 文档。


清单 1. 用于许多示例的 XML 音乐对象
                
<mp3>
   <music genre="classical">
      <artist>Ludwig van Beethoven</artist>
      <song>Fifth Symphony</song>
   </music>
   <music genre="jazz">
      <artist>Grover Washington, Jr.</artist>
      <song>The Best Is Yet to Come</song>
   </music>
   <music genre="classical">
      <artist>Johann Sebastian Bach</artist>
      <song>Double Concerto in D- for Two Violins</song>
   </music>
   <music genre="jazz">
      <artist>Dave Brubeck</artist>
      <song>Take Five</song>
      <song>Truth Is Fallen</song>
   </music>
   <music genre="classical">
      <artist>Johannes Brahms</artist>
      <song>Piano Sonata No. 1 in C major</song>
   </music>
</mp3>   

创建 XML 对象

这个过程的第一步是创建 XML 对象。E4X 提供了一种 XML() 类型,用来存储 XML 元素。在 清单 2 中,使用 JavaScript 开发人员熟悉的格式创建新的 XML 对象。


清单 2. 创建 XML 对象
                
      var xmlMusic = new XML() ;

XML 对象创建后,就能装载 XML 文档。E4X 有两个首选的方法来创建 XML 对象。第一种方法是创建 XML 对象,然后装载它。如 清单 3 所示。


清单 3. 装载 XML 对象:方法 1
                
<script type="text/javascript ; e4x=1">

   var xmlMusic=new XML() ;
   xmlMusic = <mp3>
      <music genre="classical">
         <artist>Ludwig van Beethoven</artist>
         <song>Fifth Symphony</song>
      </music>
      <music genre="jazz">
         <artist>Grover Washington, Jr.</artist>
         <song>The Best Is Yet to Come</song>
      </music>
      <music genre="classical">
         <artist>Johann Sebastian Bach</artist>
         <song>Double Concerto in D- for Two Violins</song>
      </music>
      <music genre="jazz">
         <artist>Dave Brubeck</artist>
         <song>Take Five</song>
         <song>Truth Is Fallen</song>
      </music>
      <music genre="classical">
         <artist>Johannes Brahms</artist>
         <song>Piano Sonata No. 1 in C major</song>
      </music>
   </mp3>

</script>

或者在创建 XML 后,将 XML 文档作为一个字符串载入到元素中。如 清单 4 所示。


清单 4. 装载 XML 对象:方法 2
                
<script type="text/javascript ; e4x=1">

   var xmlMusic=new XML('<mp3><music genre="classical">
              <artist>Ludwig van Beethoven</artist>
              <song>Fifth Symphony</song></music>
              <music genre="jazz"><artist>Grover Washington, Jr.</artist>
              <song>The Best Is Yet to Come</song>
              </music><music genre="classical">
        <artist>Johann Sebastian Bach</artist>
              <song>Double Concerto in D- for Two Violins</song></music>
              <music genre="jazz"><artist>Dave Brubeck</artist>
              <song>Take Five</song><song>Truth Is Fallen</song>
              </music><music genre="classical">
              <artist>Johannes Brahms</artist>
              <song>Piano Sonata No. 1 in C major</song>
              </music></mp3>');

</script>

注意,表达式 e4x=1 被添加到 script 语句中。E4X 广泛用于将 XML 解析到 JavaScript 对象中。不过,直接使用 XML 语法将会出现问题。如果嵌入到其他基于标记的环境中,会产生一些无法预料的问题。默认情况下,该问题导致 E4X 在火狐浏览器 1.5 版的 HTML 页面中不可用,因为在 HTML 中,它与公认的方法(取消来自不兼容浏览器的脚本)相冲突。为解决这一问题,使用 E4X 时,在表单 type="text/javascript; e4x=1"script 语句中部署一个属性。

尽管 XML 对象表现形式和运行机制与常规 JavaScript 对象相似,但是,这两个对象并不相同。一些 E4X 语法只适用于 E4X XML 对象。JavaScript 开发人员对这些语法是熟悉的,但是 E4X 并不为 XML 到本地 JavaScript 对象的直接映像提供便利。相反,它提供了直接映像的假象(illusion)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值