e4x 解析xml
2013-07-12 22:52
567 查看
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
E4X 增加了 JavaScript 程序语言对 XML 的支持,XML
作为在应用程序和平台之间交换文档和数据的通用方法,得到了广泛认可。这种认可直接使
XML
成为解决共享文档和数据的互操作性问题的有效方法。XML
结构组件的灵活性促成了它强大丰富的功能。E4X 使
XML
的结构组件的使用更加方便,因此大大增加了灵活性。
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
音乐对象
创建 XML 对象
这个过程的第一步是创建 XML 对象。E4X
提供了一种
元素。在 清单 2
中,使用 JavaScript 开发人员熟悉的格式创建新的 XML
对象。
清单 2. 创建 XML 对象
XML 对象创建后,就能装载 XML 文档。E4X
有两个首选的方法来创建 XML
对象。第一种方法是创建 XML
对象,然后装载它。如 清单 3
所示。
清单 3. 装载 XML 对象:方法 1
或者在创建 XML 后,将 XML
文档作为一个字符串载入到元素中。如 清单 4
所示。
清单 4. 装载 XML 对象:方法 2
注意,表达式
JavaScript 对象中。不过,直接使用 XML
语法将会出现问题。如果嵌入到其他基于标记的环境中,会产生一些无法预料的问题。默认情况下,该问题导致
E4X 在火狐浏览器 1.5 版的 HTML
页面中不可用,因为在 HTML
中,它与公认的方法(取消来自不兼容浏览器的脚本)相冲突。为解决这一问题,使用
E4X 时,在表单
尽管 XML 对象表现形式和运行机制与常规 JavaScript
对象相似,但是,这两个对象并不相同。一些 E4X
语法只适用于 E4X XML 对象。JavaScript
开发人员对这些语法是熟悉的,但是 E4X 并不为 XML
到本地 JavaScript
对象的直接映像提供便利。相反,它提供了直接映像的假象(illusion)。
访问数据
XML 对象支持在常规 JavaScript
编程中使用的小圆点(.)和方括号(
并不访问对象属性,而是过载这些运算符,并通过它们访问子元素。
下面的访问例子以 上面
创建的
对象为基础。要查看全部元素的内容,请使用
清单 5
中的语法。
清单 5. 查看全部元素的内容
该语句的输出结果为:
要查找第三个艺术家,输入与类似于 清单 6
的语句。
清单 6. 浏览艺术家 3
该语句的输出结果为:
注意:E4X 从 0
开始记数,因此获取第三个记录的索引值为
为获取第一个音乐节点的所有内容,输入 清单 7
所示的语句。
清单 7. 获取第一个音乐节点
该语句的输出结果为:
从这些例子中可以看到,使用 E4X 访问 XML
节点是非常简单的。
访问属性
可以使用符号(
对象的属性。属性操作是处理 XML
数据中比较难掌握的部分之一。使用 E4X
可以大大简化这一任务。例如,要检索古典流派的所有数据,输入类似于
清单 8
的语句。
清单 8. 访问节点属性
该语句的输出结果为:
要获取古典流派中的艺术家名字,输入 清单 9
中的语句。
清单 9. 获取古典艺术家名字
Which outputs only the names:
在此,E4X
的强大功能、灵活性和简单易用得到了有力的证明。这样,不必再因属性难操作而避免使用它们了。可以很清楚地看到,E4X
能够轻松处理它们。
添加子节点
E4X 允许使用简单 JavaScript
符号为一个现有元素添加子元素。例如,如果想要为一个现有的艺术家添加一首歌曲
— 比如 Johann Sebastian Bach 的 Brandenburg Concertos
— 使用
所示。
清单 10. 使用 +=
运算符添加一个节点
添加节点后的输出结果为:
现在,Bach 作为
对象的一部分,有两个作品,在该语句运行之前只有一个作品。
改变子对象的内容
要改变一个元素或属性的值,必须对其赋一个新值。如
清单 11
所示。
清单 11. 用 = 运算符修改一个节点
输出结果为:
注意:因为使用等号(
的歌曲都被修改,只保留新内容。
删除子节点
可以使用
语句删除一个子节点,如 清单 12
所示。
清单12. 删除子节点
输出结果为:
歌曲节点被删除,艺术家节点仍然存在。
过滤
E4X
提供了一种特殊的过滤运算符(圆括号),用来选择文档中与特定标准匹配的节点。过滤运算符为数据设置一个条件,从子节点中选出需要的元素。过滤运算符通过用圆括号内的表达式执行。实际上,您已经见过这个运算符了,现在,正式介绍它。
例如,过滤一个属性,如 清单 13
所示。
清单13. 使用属性过滤数据
过滤后的输出结果为:
除了属性之外,还可以使用艺术家来过滤数据,如
清单 14
所示。
清单 14. 使用艺术家的名字查找歌曲
过滤的输出结果为:
处理 XMLList
E4X 识别两种基本类型:
属性的一个有序集合 —
比如,菜谱、大洲、电话号码以及化学元素的列表。由一个以上的节点组成的
E4X 实际上是
对象的组合。
类型是一个快速查询的重要工具 —
例如,当查找一个给定节点的子节点时,便可生成一个
下面的代码概括了
的框架,它是基于音乐的示例,包括多个节点:
对象有一个初始化程序,它是一个描述
属性的结构列表,并使用了匿名的 XML
元素语法。初始化程序以
字符结束。清单 15
中的代码序列阐明了初始化
对象的方法。
清单 15. 初始化 XMLList 对象
那么,
对象之间有什么不同呢?本质上的差别是
类型处理一种包含多个子节点的特定对象,
处理一个包含多个 XML 对象的集合。
E4X 刻意去区别
对象,但这一项几乎不可能完成。因此,
值与
值之间若有区别也是可以忽略的。
执行计算
可以像在 XML 中一样,使用 E4X 对 XML
数据执行计算。例如,可以对一个新的 XML
文档中的数据进行数学运算。XML 文档如 清单 16
所示。
清单 16. 计算示例
这里给出计算数据的脚本。使用
循环语句,计算库存的总值和仓库中现有项目的总量。清单 17
使用
对象的大小和控制循环。
清单 17. 使用 E4X 进行计算
该脚本的输出结果为:
使用 XMLObject 方法
E4X 提供了一组计算
中已经看到如何在脚本中用
方法来控制流程。E4X
方法可以完成很多任务,包括标识属性、名称空间以及添加和标识子元素等。
前面提到过,E4X 用一个大小值来消除
对象之间的区别。因此,在 E4X 中,可供
表 1
列出了
对象可用的方法。所有列出的方法都可用于
的方法可用于
对象。
表1. XML 和 XMLList 对象可用的方法
在 清单 10
中,采用
对象添加一个歌曲节点,使用
方法可得到相同的输出结果。使用
方法,可以在现有对象或元素末尾添加一个节点。为演示这一功能,清单 18
重复清单 10 中执行的处理过程,但使用
运算符。
清单 18. 使用 appendChild()
方法添加一个节点
该代码产生的输出结果为:
可以看到,输出结果显示在
对象的第三个元素中添加歌曲,和清单 10
中的代码的结果相同。
还可以用
方法添加节点。
方法在指定元素的子节点之前添加一个节点。例如,同样使用
Bach 的协奏曲 [i]Brandenburg Concertos,使用
中的代码将作品放在当前歌曲列表的前面,而不是后面。
清单 19. 使用 prependChild()
方法添加一个节点
结果显示协奏曲已经插入到最初歌曲节点的前面:
使用
方法,可以在两个现有节点之间插入一个节点。清单 20
处理包含两首歌曲的 Dave Brubeck 数据,使用
置于当前两个节点之间。
清单 20. 使用 insertBefore()
方法添加一个节点
该代码产生的输出结果为:
可以使用另外一种方法
来确定一个对象中的属性。例如,使用 清单 21
中的代码,列出
对象的所有属性。
清单 21. 使用 attribute()
方法确定属性
该方法生成
对象包含的所有属性的列表:
可以使用
风格的所有元素。借助
方法,清单 22
中的代码显示含
属性的所有节点。
清单 22. 确定含 jazz 属性的元素
该代码产生的输出结果为:
E4X 中的方法(如运算符)提供了一种处理 XML
数据的简单机制。
浏览器的兼容性
E4X 是最为简单易用的处理 XML
数据的方法之一。然而,并不是所有的浏览器都支持
E4X。目前,Windows® Internet
Explorer®
不支持它.但是火狐浏览器和所有基于开源 Rhino
JavaScript 技术的系统都支持 E4X。
E4X 增加了 JavaScript 程序语言对 XML 的支持,XML
作为在应用程序和平台之间交换文档和数据的通用方法,得到了广泛认可。这种认可直接使
XML
成为解决共享文档和数据的互操作性问题的有效方法。XML
结构组件的灵活性促成了它强大丰富的功能。E4X 使
XML
的结构组件的使用更加方便,因此大大增加了灵活性。
|
代码,是一个与 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 对象。E4X
提供了一种
XML()类型,用来存储 XML
元素。在 清单 2
中,使用 JavaScript 开发人员熟悉的格式创建新的 XML
对象。
清单 2. 创建 XML 对象
var xmlMusic = new XML() ; |
有两个首选的方法来创建 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> |
文档作为一个字符串载入到元素中。如 清单 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)。
|
XML 对象支持在常规 JavaScript
编程中使用的小圆点(.)和方括号(
[])符号。E4X
并不访问对象属性,而是过载这些运算符,并通过它们访问子元素。
下面的访问例子以 上面
创建的
xmlMusic
对象为基础。要查看全部元素的内容,请使用
清单 5
中的语法。
清单 5. 查看全部元素的内容
document.write(xmlMusic); |
Ludwig van Beethoven Fifth Symphony Grover Washington, Jr. The Best Is Yet to Come Johann Sebastian Bach Double Concerto in D- for Two Violins Dave Brubeck Take Five Truth Is Fallen Johannes Brahms Piano Sonata No. 1 in C major |
的语句。
清单 6. 浏览艺术家 3
document.write ( xmlMusic.music[2].artist ); |
Johann Sebastian Bach |
开始记数,因此获取第三个记录的索引值为
2。
为获取第一个音乐节点的所有内容,输入 清单 7
所示的语句。
清单 7. 获取第一个音乐节点
document.write (xmlMusic.music[0].*); |
Ludwig van Beethoven Fifth Symphony |
节点是非常简单的。
|
可以使用符号(
@)访问 XML
对象的属性。属性操作是处理 XML
数据中比较难掌握的部分之一。使用 E4X
可以大大简化这一任务。例如,要检索古典流派的所有数据,输入类似于
清单 8
的语句。
清单 8. 访问节点属性
document.write(xmlMusic.music.(@genre==”classical”) ); |
Ludwig van Beethoven Fifth Symphony Johann Sebastian Bach Double Concerto in D- for Two Violins Johannes Brahms Piano Sonata No. 1 in C major |
中的语句。
清单 9. 获取古典艺术家名字
document.write(xmlMusic.music.(@genre=="classical").artist ); |
|
的强大功能、灵活性和简单易用得到了有力的证明。这样,不必再因属性难操作而避免使用它们了。可以很清楚地看到,E4X
能够轻松处理它们。
|
E4X 允许使用简单 JavaScript
符号为一个现有元素添加子元素。例如,如果想要为一个现有的艺术家添加一首歌曲
— 比如 Johann Sebastian Bach 的 Brandenburg Concertos
— 使用
“+=”运算符,如 清单 10
所示。
清单 10. 使用 +=
运算符添加一个节点
xmlMusic.music[2].song += "Brandenburg concertos" ; document.write (xmlMusic.music[2]); |
Johann Sebastian BachDouble Concerto in D- for Two Violins |
xmlMusic
对象的一部分,有两个作品,在该语句运行之前只有一个作品。
|
要改变一个元素或属性的值,必须对其赋一个新值。如
清单 11
所示。
清单 11. 用 = 运算符修改一个节点
xmlMusic.music[3].song = "Pick Up Sticks" ; document.write ( xmlMusic.music[3] ); |
Dave Brubeck Pick Up Sticks |
=)替换
xmlMusic.music[3].song的内容,Dave Brubeck
的歌曲都被修改,只保留新内容。
|
可以使用
delete
语句删除一个子节点,如 清单 12
所示。
清单12. 删除子节点
delete xmlMusic.music.song[1] ; document.write (xmlMusic.music[1].*); |
Grover Washington, Jr. |
|
E4X
提供了一种特殊的过滤运算符(圆括号),用来选择文档中与特定标准匹配的节点。过滤运算符为数据设置一个条件,从子节点中选出需要的元素。过滤运算符通过用圆括号内的表达式执行。实际上,您已经见过这个运算符了,现在,正式介绍它。
例如,过滤一个属性,如 清单 13
所示。
清单13. 使用属性过滤数据
document.write (xmlMusic.music.(@genre=="jazz") ); |
Grover Washington, Jr. The Best Is Yet to Come Dave Brubeck Take Five Truth Is Fallen |
清单 14
所示。
清单 14. 使用艺术家的名字查找歌曲
document.write (xmlMusic.music.(artist == "Dave Brubeck").song); |
Take Five Truth Is Fallen |
E4X 识别两种基本类型:
XML()和
XMLList()。
XMLList对象表示 XML
属性的一个有序集合 —
比如,菜谱、大洲、电话号码以及化学元素的列表。由一个以上的节点组成的
E4X 实际上是
XML()和
XMLList()
对象的组合。
XMLList
类型是一个快速查询的重要工具 —
例如,当查找一个给定节点的子节点时,便可生成一个
XMLList。
下面的代码概括了
XMLList
的框架,它是基于音乐的示例,包括多个节点:
<music></music> <music></music> <music></music> <music></music> <music></music> |
XMLList
对象有一个初始化程序,它是一个描述
XMLList对象初始化的表达式。
XMLList初始化程序描述了 XML
属性的结构列表,并使用了匿名的 XML
元素语法。初始化程序以
<>字符开始,以
</>
字符结束。清单 15
中的代码序列阐明了初始化
XMLList
对象的方法。
清单 15. 初始化 XMLList 对象
var xmlListObject = <><artist>Ludwig van Beethoven</artist> <song>Fifth Symphony</song></>; |
XML对象和
XMLList
对象之间有什么不同呢?本质上的差别是
XML
类型处理一种包含多个子节点的特定对象,
XMLList
处理一个包含多个 XML 对象的集合。
E4X 刻意去区别
XML对象和
XMLList
对象,但这一项几乎不可能完成。因此,
XML
值与
XMLList
值之间若有区别也是可以忽略的。
|
可以像在 XML 中一样,使用 E4X 对 XML
数据执行计算。例如,可以对一个新的 XML
文档中的数据进行数学运算。XML 文档如 清单 16
所示。
清单 16. 计算示例
<script type="text/javascript ; e4x=1"> var xmlCatalog=new XML() ; xmlCatalog=<inventory> <item genre="apparel"> <description>Dress</description> <price>50.00</price> <quantity>3</quantity> </item> <item genre="accessory"> <description>Hat.</description> <price>25.00</price> <quantity>5</quantity> </item> <item genre="apparel"> <description>tie</description> <price>15.00</price> <quantity>7</quantity> </item> <item genre="accessory"> <description>Belt</description> <price>15.00</price> <quantity>1</quantity> </item> <item genre="apparel"> <description>Suit</description> <price>100.00</price> <quantity>2</quantity> </item> </inventory> </script> |
while
循环语句,计算库存的总值和仓库中现有项目的总量。清单 17
使用
length()方法确定
XML
对象的大小和控制循环。
清单 17. 使用 E4X 进行计算
<script type="text/javascript ; e4x=1"> var i = 0 ; var totItems=0 ; var totInventoryValue=0 ; while ( i < xmlCatalog.item.length() ) { totInventoryValue += xmlCatalog.item.quantity * xmlCatalog.item[i].price ; totItems+= xmlCatalog.item[i].quantity * 1 ; i = i + 1 ; } document.write ("Total number of items: " + totItems + "<p>"); document.write ("Total inventory value: $" + totInventoryValue + "<p>"); </script> |
Total number of items: 18 Total inventory value: $595 |
E4X 提供了一组计算
XML对象和
XMLList对象的方法,从 清单 17
中已经看到如何在脚本中用
length()
方法来控制流程。E4X
方法可以完成很多任务,包括标识属性、名称空间以及添加和标识子元素等。
前面提到过,E4X 用一个大小值来消除
XML对象和
XMLList
对象之间的区别。因此,在 E4X 中,可供
XML对象使用的方法对有适当大小的
XMLList对象也适用。
表 1
列出了
XML对象和
XMLList
对象可用的方法。所有列出的方法都可用于
XML对象,所有含 “是”
的方法可用于
XML对象和
XMLList
对象。
表1. XML 和 XMLList 对象可用的方法
XML 对象方法 | 可用于 XMLList 对象 | XML 对象方法 | 可用于 XMLList 对象 |
addNamespace(namespace) | 否 | name() | 否 |
appendChild(child) | 否 | namespace([prefix]) | 否 |
attribute(attributeName) | 是 | namespaceDeclarations() | 否 |
attributes() | 是 | nodeKind() | 否 |
child(propertyName) | 是 | normalize() | 是 |
childIndex() | 否 | parent() | 是 |
children() | 是 | processingInstructions([name]) | 是 |
comments() | 是 | prependChild(value) | 否 |
contains(value) | 是 | removeNamespace(namespace) | 否 |
copy() | 是 | replace(propertyName, value) | 否 |
descendants([name]) | 是 | setChildren(value) | 否 |
elements([name]) | 是 | setLocalName(name) | 否 |
hasComplexContent() | 是 | setName(name) | 否 |
hasSimpleContent() | 是 | setNamespace(ns) | 否 |
inScopeNamespaces() | 否 | text() | 是 |
insertChildAfter(child1, child2) | 否 | toString() | 是 |
insertChildBefore(child1, child2) | 否 | toXMLString() | 是 |
length() | 是 | valueOf() | 是 |
localName() | 否 |
中,采用
+=运算符为
xmlMusic
对象添加一个歌曲节点,使用
appendChild()
方法可得到相同的输出结果。使用
appendChild()
方法,可以在现有对象或元素末尾添加一个节点。为演示这一功能,清单 18
重复清单 10 中执行的处理过程,但使用
appendChild()方法代替
+=
运算符。
清单 18. 使用 appendChild()
方法添加一个节点
xmlMusic.music[2].appendChild(<song>Brandenburg Concertos</song>) ; document.write (xmlMusic.music[2].*); |
Johann Sebastian BachDouble Concerto in D- for Two Violins |
XMLList
对象的第三个元素中添加歌曲,和清单 10
中的代码的结果相同。
还可以用
prependChild()
方法添加节点。
prependChild()
方法在指定元素的子节点之前添加一个节点。例如,同样使用
Bach 的协奏曲 [i]Brandenburg Concertos,使用
prependChild()方法,清单 19
中的代码将作品放在当前歌曲列表的前面,而不是后面。
清单 19. 使用 prependChild()
方法添加一个节点
xmlMusic.music[2].song[0].prependChild(<song>Brandenburg Concertos</song>) ; document.write (xmlMusic.music[2].*); |
Johann Sebastian BachBrandenburg Concertos |
insertBefore()
方法,可以在两个现有节点之间插入一个节点。清单 20
处理包含两首歌曲的 Dave Brubeck 数据,使用
insertBefore()方法可以将歌曲 “Eleven Four”
置于当前两个节点之间。
清单 20. 使用 insertBefore()
方法添加一个节点
xmlMusic.music[3].insertChildBefore(xmlMusic.music[3].song[1],<song>Eleven Four</song>); document.write (xmlMusic.music[3].*); |
Dave Brubeck Take Five Eleven Four Truth Is Fallen |
attributes()
来确定一个对象中的属性。例如,使用 清单 21
中的代码,列出
xmlMusic
对象的所有属性。
清单 21. 使用 attribute()
方法确定属性
document.write (xmlMusic.music.attributes()); |
xmlMusic
对象包含的所有属性的列表:
classical jazz classical jazz classical |
attributes()确定 jazz
风格的所有元素。借助
length()
方法,清单 22
中的代码显示含
jazz
属性的所有节点。
清单 22. 确定含 jazz 属性的元素
var i = 0 ; while ( i < xmlMusic.music.length() ) { if ( xmlMusic.music[i].attributes() == "jazz" ) { document.write (xmlMusic.music[i].* + "<p>"); } i = i + 1 ; } |
Grover Washington, Jr. The Best Is Yet to Come Dave Brubeck Take Five Truth Is Fallen |
数据的简单机制。
|
E4X 是最为简单易用的处理 XML
数据的方法之一。然而,并不是所有的浏览器都支持
E4X。目前,Windows® Internet
Explorer®
不支持它.但是火狐浏览器和所有基于开源 Rhino
JavaScript 技术的系统都支持 E4X。
相关文章推荐
- JS&nbsp;解析&nbsp;JSON&nbsp;及&nbsp;XML
- digester解析xml_org.xml.sax.SAXParseException; lineNumber: 2193; columnNumber: 41; 引用了实体 "nbsp", 但未声明它
- Android&nbsp;解析XML
- PHP XML操作的各种方法解析(…
- JAVA xml解析
- org.w3c.dom(java&nbsp;dom)解析XML文档
- [iPhone]XML文件解析 parsing-xml-…
- (转)Android XML解析与生成
- GData&nbsp;解析Xml以及写xml到文…
- 使用Dom4j解析XML 泽0715 新浪博客
- 网络数据解析(1) XML
- C++&nbsp;XML解析之TinyXML篇【转】
- jquery xml解析
- Discuz!X1.5&nbsp;全面解析之辅助运营…
- android color.xml
- XML解析异常之 The processing instruction target matching "[xX][mM][lL]" is not allowed.
- iPhone 两种常用的XML解析方式(NSXMLParser & GDataXMLNode)(转载)
- android&nbsp;AndroidManifest.xml&nbsp;多个…
- XML解析错误,Error Domain=NSXMLParserErrorDomain Code=9 &amp;quot;(null)&amp;quot;
- 读取数据库中的数据到xml java