- 浏览: 68762 次
- 性别:
- 来自: 北京
最新评论
-
_MyCould:
Flex Module基础 -
szlaptop:
这个正式我一直想的,楼主,能帖图上来看看吗?谢谢
最近完成的某系统的报表组件 -
wfzhanga:
楼主整理的不错,能不能把代码传上去啊。如果方便请帮我传一下啊, ...
flex ToolTip专题 -
bence:
总结的很好,谢谢分享
Flex Metadata Tag高级应用 -
fansfirst2008:
楼主太强了,不仅把东西讲解得深入浅出,而且写的文字表达很漂亮! ...
flex itemRenderer使用(一)内联渲染器
FLEX处理XML,ECMAScript For XML(e4x)
使用 appendChild() 方法可为 XML 分配一个新的子节点
使用 @ 和 . 运算符不仅可以读取数据,还可以分配数据,如下所示:
使用 for 循环可以循环访问 XML 的节点,如下所示:
可将 XML 文本赋予 XML 对象,如下所示:
象的实例:
要从 URL 加载 XML 数据,请使用 URLLoader 类,如下面的示例所示:
使用 prependChild() 方法或 appendChild() 方法可在 XML 对象属性列表的开头或结尾
添加属性,如下面的示例所示:
使用 insertChildBefore() 方法或 insertChildAfter() 方法在指定属性之前或之后添加
属性,如下所示:
它变量)传递数据:
可以使用 + 和 += 运算符连接 XMLList 对象:
这将对 XMLList 对象 xList 进行如下设置:
myXML.book 是一个 XMLList 对象,它包含名为 book 的 myXML 对象的子属性。
myXML..lastName 是一个 XMLList 对象,它包含名为 lastName 的任何后代属性。
parent() 方法返回 XML 对象的父项。
可以使用子级列表的序数索引值访问特定的子对象。例如,假设 XML 对象 myXML 有两个名
为 book 的子属性。每个名为 book 的子属性都有一个与之关联的索引编号:
myXML.book[0]
myXML.book[1]
要访问特定的孙项,可为子项和孙项名称同时指定索引编号:
myXML.book[0].title[0]
不过,如果 x.book[0] 只有一个子项名为 title,则可以省略索引引用,如下所示:
myXML.book[0].title
同样,如果对象 x 只有一个 book 子对象,并且如果该子对象只有一个 title 对象,则可以同
时省略两个索引引用,如下所示:
myXML.book.title
可以使用 child() 方法导航到名称基于变量或表达式的子项,如下面的示例所示:
使用 @ 符号(属性标识符运算符)可以访问 XML 或 XMLList 对象的属性,如下面的代码
所示:
可以一起使用 * 通配符和 @ 符号来访问 XML 或 XMLList 对象的所有属性,如下面的代码
所示:
可以使用 attribute() 或 attributes() 方法访问 XML 或 XMLList 对象的特定属性或
所有属性,如下面的代码所示:
请注意,还可以使用以下语法访问属性,如下面的示例所示:
可以使用括号运算符 — ( 和) — 过滤具有特定元素名称或属性值的元素。请考虑下面的
XML 对象:
遍历 XML 结构以下表达式都是有效的:
如果试图按照可能不存在的属性或元素过滤,Adobe Flash Player 将引发异常。例如,以下
代码的最后一行产生一个错误,因为第二个 p 元素中没有 id 属性:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
为了避免这些错误,可以使用 attribute() 和 elements() 方法来识别具有匹配属性或元素
的属性,如下面的代码所示:
还可以使用 hasOwnProperty() 方法,如下面的代码所示:
ActionScript 3.0 包含用于循环访问 XMLList 对象的 for..in 语句和 for each..in 语
句。例如,我们来看 XML 对象 myXML 和 XMLList 对象 myXML.item。XMLList 对象
myXML.item 由 XML 对象的两个 item 节点组成。
for..in 语句用于循环访问 XMLList 中的一组属性名称:
var myXML:XML = <order> <item id='1'> <menuName>burger</menuName> <price>3.95</price> </item> <item id='2'> <menuName>fries</menuName> <price>1.45</price> </item> </order>
trace(myXML.item[0].menuName); // 输出:burger trace(myXML.item.(@id==2).menuName); // 输出:fries trace(myXML.item.(menuName=="burger").price); // 输出:3.95
使用 appendChild() 方法可为 XML 分配一个新的子节点
使用 @ 和 . 运算符不仅可以读取数据,还可以分配数据,如下所示:
myXML.item[0].menuName="regular burger"; myXML.item[1].menuName="small fries"; myXML.item[2].menuName="medium cola"; myXML.item.(menuName=="regular burger").@quantity = "2"; myXML.item.(menuName=="small fries").@quantity = "2"; myXML.item.(menuName=="medium cola").@quantity = "2";
使用 for 循环可以循环访问 XML 的节点,如下所示:
var total:Number = 0; for each (var property:XML in myXML.item) { var q:int = Number(property.@quantity); var p:Number = Number(property.price); ….. { trace("Total: $", total.toFixed(2));
可将 XML 文本赋予 XML 对象,如下所示:
var myXML:XML = <order> <item id='1'> <menuName>burger</menuName> <price>3.95</price> </item> <item id='2'> <menuName>fries</menuName> <price>1.45</price> </item> </order>如下面的代码片断所示,还可以使用 new 构造函数从包含 XML 数据的字符串创建 XML 对
象的实例:
var str:String = "<order><item id='1'><menuName>burger</menuName>" + "<price>3.95</price></item></order>"; var myXML:XML = new XML(str);
要从 URL 加载 XML 数据,请使用 URLLoader 类,如下面的示例所示:
import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; var externalXML:XML; var loader:URLLoader = new URLLoader(); var request:URLRequest = new URLRequest("xmlFile.xml"); loader.load(request); loader.addEventListener(Event.COMPLETE, onComplete); function onComplete(event:Event):void { var loader:URLLoader = event.target as URLLoader; if (loader != null) { externalXML = new XML(loader.data); trace(externalXML.toXMLString()); } else { trace("loader is not a URLLoader!"); } }
使用 prependChild() 方法或 appendChild() 方法可在 XML 对象属性列表的开头或结尾
添加属性,如下面的示例所示:
var x1:XML = <p>Line 1</p> var x2:XML = <p>Line 2</p> var x:XML = <body></body> x = x.appendChild(x1); x = x.appendChild(x2); x = x.prependChild(<p>Line 0</p>); // x == <body><p>Line 0</p><p>Line 1</p><p>Line 2</p></body>
使用 insertChildBefore() 方法或 insertChildAfter() 方法在指定属性之前或之后添加
属性,如下所示:
var x:XML = <body> <p>Paragraph 1</p> <p>Paragraph 2</p> </body> var newNode:XML = <p>Paragraph 1.5</p> x = x.insertChildAfter(x.p[0], newNode) x = x.insertChildBefore(x.p[2], <p>Paragraph 1.75</p>)如下面的示例所示,还可以使用大括号运算符({ 和 })在构造 XML 对象时按引用(从其
它变量)传递数据:
var ids:Array = [121, 122, 123]; var names:Array = [["Murphy","Pat"], ["Thibaut","Jean"], ["Smith","Vijay"]] var x:XML = new XML("<employeeList></employeeList>"); for (var i:int = 0; i < 3; i++) { var newnode:XML = new XML(); newnode = <employee id={ids[i]}> <last>{names[i][0]}</last> <first>{names[i][1]}</first> </employee>; x = x.appendChild(newnode) }可以使用 = 运算符将属性 (property) 和属性 (attribute) 赋予 XML 对象,如下所示:
var x:XML = <employee> <lastname>Smith</lastname> </employee> x.firstname = "Jean"; x.@id = "239"; 这将对 XML 对象 x 进行如下设置: <employee id="239"> <lastname>Smith</lastname> <firstname>Jean</firstname> </employee>
可以使用 + 和 += 运算符连接 XMLList 对象:
var x1:XML = <a>test1</a> var x2:XML = <b>test2</b> var xList:XMLList = x1 + x2; xList += <c>test3</c>
这将对 XMLList 对象 xList 进行如下设置:
<a>test1</a> <b>test2</b> <c>test3</c>
myXML.book 是一个 XMLList 对象,它包含名为 book 的 myXML 对象的子属性。
myXML..lastName 是一个 XMLList 对象,它包含名为 lastName 的任何后代属性。
parent() 方法返回 XML 对象的父项。
可以使用子级列表的序数索引值访问特定的子对象。例如,假设 XML 对象 myXML 有两个名
为 book 的子属性。每个名为 book 的子属性都有一个与之关联的索引编号:
myXML.book[0]
myXML.book[1]
要访问特定的孙项,可为子项和孙项名称同时指定索引编号:
myXML.book[0].title[0]
不过,如果 x.book[0] 只有一个子项名为 title,则可以省略索引引用,如下所示:
myXML.book[0].title
同样,如果对象 x 只有一个 book 子对象,并且如果该子对象只有一个 title 对象,则可以同
时省略两个索引引用,如下所示:
myXML.book.title
可以使用 child() 方法导航到名称基于变量或表达式的子项,如下面的示例所示:
var myXML:XML = <order> <book> <title>Dictionary</title> </book> </order>; var childName:String = "book"; trace(myXML.child(childName).title) // 输出:Dictionary
使用 @ 符号(属性标识符运算符)可以访问 XML 或 XMLList 对象的属性,如下面的代码
所示:
var employee:XML = <employee id="6401" code="233"> <lastName>Wu</lastName> <firstName>Erin</firstName> </employee>; trace(employee.@id); // 6401
可以一起使用 * 通配符和 @ 符号来访问 XML 或 XMLList 对象的所有属性,如下面的代码
所示:
var employee:XML = <employee id="6401" code="233"> <lastName>Wu</lastName> <firstName>Erin</firstName> </employee>; trace(employee.@*.toXMLString()); // 6401 // 233
可以使用 attribute() 或 attributes() 方法访问 XML 或 XMLList 对象的特定属性或
所有属性,如下面的代码所示:
var employee:XML = <employee id="6401" code="233"> <lastName>Wu</lastName> <firstName>Erin</firstName> </employee>; trace(employee.attribute("id")); // 6401 trace(employee.attribute("*").toXMLString()); // 6401 // 233 trace(employee.attributes().toXMLString()); // 6401 // 233
请注意,还可以使用以下语法访问属性,如下面的示例所示:
employee.attribute("id") employee["@id"] employee.@["id"]其中每一个都等效于 employee.@id。不过,语法 employee.@id 是首选方法。
可以使用括号运算符 — ( 和) — 过滤具有特定元素名称或属性值的元素。请考虑下面的
XML 对象:
var x:XML = <employeeList> <employee id="347"> <lastName>Zmed</lastName> <firstName>Sue</firstName> <position>Data analyst</position> </employee> <employee id="348"> <lastName>McGee</lastName> <firstName>Chuck</firstName> <position>Jr. data analyst</position> </employee> </employeeList>
遍历 XML 结构以下表达式都是有效的:
■ x.employee.(lastName == "McGee") — 这是第二个 employee 节点。 ■ x.employee.(lastName == "McGee").firstName — 这是第二个 employee 节点的 firstName 属性。 ■ x.employee.(lastName == "McGee").@id — 这是第二个 employee 节点的 id 属性的值。 ■ x.employee.(@id == 347) — 第一个 employee 节点。 ■ x.employee.(@id == 347).lastName — 这是第一个 employee 节点的 lastName 属性。 ■ x.employee.(@id > 300) — 这是具有两个 employee 属性的 XMLList。 ■ x.employee.(position.toString().search("analyst") > -1) — 这是具有两个 position 属性的 XMLList。
如果试图按照可能不存在的属性或元素过滤,Adobe Flash Player 将引发异常。例如,以下
代码的最后一行产生一个错误,因为第二个 p 元素中没有 id 属性:
var doc:XML = <body> <p id='123'>Hello, <b>Bob</b>.</p> <p>Hello.</p> </body>; trace(doc.p.(@id == '123'));同样,以下代码的最后一行也会产生一个错误,因为第二个 p 元素没有 b 属性:
var doc:XML =
<body>
<p id='123'>Hello, <b>Bob</b>.</p>
<p>Hello.</p>
</body>;
trace(doc.p.(b == 'Bob'));
为了避免这些错误,可以使用 attribute() 和 elements() 方法来识别具有匹配属性或元素
的属性,如下面的代码所示:
var doc:XML = <body> <p id='123'>Hello, <b>Bob</b>.</p> <p>Hello.</p> </body>; trace(doc.p.(attribute('id') == '123')); trace(doc.p.(elements('b') == 'Bob'));
还可以使用 hasOwnProperty() 方法,如下面的代码所示:
var doc:XML = <body> <p id='123'>Hello, <b>Bob</b>.</p> <p>Hello.</p> </body>; trace(doc.p.(hasOwnProperty('@id') && @id == '123')); trace(doc.p.(hasOwnProperty('b') && b == 'Bob'));
ActionScript 3.0 包含用于循环访问 XMLList 对象的 for..in 语句和 for each..in 语
句。例如,我们来看 XML 对象 myXML 和 XMLList 对象 myXML.item。XMLList 对象
myXML.item 由 XML 对象的两个 item 节点组成。
var myXML:XML = <order> <item id='1' quantity='2'> <menuName>burger</menuName> <price>3.95</price> </item> <item id='2' quantity='2'> <menuName>fries</menuName> <price>1.45</price> </item> </order>;
for..in 语句用于循环访问 XMLList 中的一组属性名称:
var total:Number = 0; for (var pname:String in myXML.item) { total += myXML.item.@quantity[pname] * myXML.item.price[pname]; }for each..in 语句用于循环访问 XMLList 中的属性:
var total2:Number = 0; for each (var prop:XML in myXML.item) { total2 += prop.@quantity * prop.price; }
发表评论
-
Flex States 视图状态
2010-08-30 23:06 2199Flex States可以为组件定义多个视图状态,每一 ... -
flex中使用链接报告优化Module大小的测试
2010-08-18 20:51 1717最近使用PuerMVC和Module机制构建了一个界面和操作类 ... -
flex ToolTip专题
2010-06-03 12:46 47051 创建ToolTips 每一个可视化的Flex组件 ... -
pureMVC使用经验和建议
2010-06-03 11:00 1501下面是有经验的朋友分 ... -
pureMVC框架及其开发
2010-06-03 10:46 1196PureMVC框架的目标很明确 ... -
HTML页面加载和解析流程
2010-04-21 11:38 28751.用户输入网址(假设是个html页面,并且是第一次访问),浏 ... -
CSS参考手册
2010-04-21 11:02 918颜色与背景 •color •background-colo ... -
HTML参考手册( 标签、属性和事件)
2010-04-20 17:17 1556HTML标签 标签 描述 DTD <!--...- ... -
flex itemRenderer使用(五):效率
2010-04-17 17:01 1259如果您要显示大量 itemRe ... -
flex itemRenderer使用(四):状态和过渡
2010-04-17 16:01 1807itemRenderer 最擅长与应用程序的用户通信。有时通信 ... -
flex itemRenderer使用(三):通信
2010-04-17 14:51 1625在本系列的第 2 部分中, 我向您展示了如何使用 MXML 和 ... -
flex itemRenderer使用(二)外部渲染器
2010-04-09 18:18 1658在本系列的第 1 部分中, 我向您展示了如何创建内联 item ... -
flex itemRenderer使用(一)内联渲染器
2010-04-09 17:50 1521Flex 提供许多控制, 它们 ... -
Flex Metadata Tag高级应用
2010-04-01 14:42 2445原文地址:http://livedocs. ... -
Flex Metadata Tag归纳总结
2010-04-01 14:25 1085Flex引入了元数据标签的概念,它告诉编译器如何编译这段 ... -
Flex和JS通信
2010-03-06 18:42 1773flex提供了和JS通信的方法,使用flexSDK中的Exte ... -
最近完成的某系统的报表组件
2010-01-20 21:12 2606最近做完了一个flex+java的项目,其中项目的主要特 ... -
Flex Chart组件的阴影去除
2009-12-21 10:52 2182去除Flex Chart组件的阴影有多种方法,最简单最直接的方 ... -
flex中==和===的区别(和java的==和equals类似但也有不同之处)
2009-12-21 09:44 4760===用于测试两个表达式 ... -
Flex中的Dictionary
2009-12-20 23:04 2514Dictionary 类用于创建属性的动态集合,该集合 ...
相关推荐
在Flex中,我们可以使用ActionScript 3(AS3)的XML类来处理XML数据。 2. Flex中的XML解析 在Flex中,XML对象提供了一种灵活的方式来创建、操作和解析XML文档。通过实例化XML类,我们可以加载XML数据并对其进行解析...
- Flex提供了`mx.utils.ObjectProxy`类和`mx.rpc.xml.XMLUtil`类来处理XML。你可以使用`new XML()`创建一个空的XML对象,并通过`.addChild()`、`.appendChild()`等方法添加元素。 3. **读取本地XML文件**: - ...
【Flex XML MP3播放器详解】 Flex是一种基于ActionScript 3.0的开源框架...通过学习这个项目,开发者不仅可以掌握Flex的基本用法,还能了解到XML数据驱动、事件处理、组件应用等核心概念,为开发更复杂的RIA奠定基础。
Flex提供了一种强大而灵活的方式来处理XML数据。在Flex中,XML可以作为一个变量、对象或者通过XMLList来处理。XML对象提供了丰富的API,如addChild、toString等,使得在程序中操作XML变得简单。 2. **XML内容生成*...
### Flex中Tree的数据源是XML 在Flex应用开发过程中,我们常常需要用到树形结构(Tree)来展示分层数据。为了使数据呈现更加灵活且高效,通常会采用XML作为数据...同时,这也为今后的学习和实践提供了一个良好的基础。
本代码示例不仅展示了如何在Flex中使用XML数据构建动态树形结构,还涉及了Flex框架的基础知识,包括MXML语言、数据绑定、事件处理等关键概念。对于想要学习Flex开发的初学者来说,这是一个很好的实践案例,有助于...
这个小例子展示了Flex中基本的数据绑定、XML解析、用户交互和组件间的通信,是构建更复杂应用的基础。理解这些概念对于开发Flex应用至关重要,因为它们构成了Flex应用数据流和用户交互的核心机制。
在本文中,我们将深入探讨如何使用Adobe Flex技术创建一个功能丰富的MP3播放器,该播放器能够导入XML播放列表,并具备一系列控制功能。这个播放器不仅允许用户播放、暂停、停止音频,还支持切换至上一首或下一首曲目...
它是一种用于标记数据的语言,能够帮助开发者在不同平台之间传输数据,是Web服务和RSS等技术的基础。对于使用Flash和Flex进行开发的专业人士来说,掌握XML及其应用方式至关重要。 #### 二、ActionScript 3.0中的XML...
在本文中,我们将深入探讨Flex的基础知识,包括其核心概念、开发环境搭建、源码结构以及如何通过"library.swf"和"catalog.xml"这两个文件理解Flex的应用。 1. Flex框架概述: Flex提供了强大的组件库,可以创建具有...
这个“flex爱好者的基础教程”旨在为初学者提供一个深入理解Flex的基础平台,帮助他们掌握这一强大的开发工具。 一、Flex概述 Flex是一种开放源代码的框架,主要用来构建具有交互性、动态图形和数据集成的Web应用...
4. Flash和Flex中的XML应用:展示如何在ActionScript中使用E4X处理XML,包括加载、解析、修改XML文档,并在Flex组件中显示XML数据。 5. 数据绑定:探讨Flex中的数据绑定机制,如何将XML数据直接绑定到UI组件,实现...
### Flex中文基础教程知识点概述 #### 一、Flex的基本概念 **Flex** 是一款由Adobe推出的开源框架,用于创建高质量的、跨平台的富互联网应用(Rich Internet Applications, RIA)。Flex结合了强大的编程功能与视觉...
1. **Flex基础**:Flex提供了一整套组件库,包括按钮、文本输入框、列表等,使得开发者可以快速构建具有专业外观和交互性的用户界面。MXML是一种声明式语言,用于布局组件和定义应用程序结构,而ActionScript则是一...
通过这个Flex-demo项目,学习者可以了解如何在Flex环境中处理XML数据,包括解析XML、将数据绑定到UI组件(如DataGrid)以及如何在MyEclipse中进行开发和调试。这将帮助他们掌握Flex的基础知识和实际应用技巧。
E4X是ActionScript 3.0对XML处理的一种扩展,它允许开发者像处理JavaScript对象一样处理XML。通过E4X,你可以直接在XML节点上执行方法,使用点号和方括号操作符访问属性,甚至进行查询。E4X的引入大大简化了XML数据...
MXML是一种XML标记语言,用于定义Flex应用程序的结构和布局;而ActionScript则是一种面向对象的脚本语言,用于实现业务逻辑。 4. **编译与测试**:使用Flex编译器将源代码编译成SWF文件,并在模拟器或实际设备上进行...
**Flex的MXML语言基础** Flex是一个用于构建富互联网应用程序(RIA)的框架,而MXML是Flex中用于创建用户界面的主要语言。MXML是一种基于XML的标记语言,它的设计目的是简化界面组件的布局和可视化元素的创建。通过...
1. **数据表示**:Flex使用XML作为数据传输格式之一,特别是在处理复杂数据结构时,XML提供了清晰的数据描述能力。 2. **样式配置**:Flex的样式系统支持使用XML文件来定义样式规则,这使得开发者能够更灵活地控制...