- 浏览: 60790 次
- 来自: 北京
文章分类
最新评论
-
pengylfighting:
太感谢了
tomcat启动慢问题 -
shoushou2001:
很好很强大,
项目在tomcat中能运行,可是在WebLogic中部署就跑错的解决方案 -
java风:
严重错误 主要是程序的错误
WARN 为一般警告,比如ses ...
配置Log4j
AS3中遍历xml
as3比as2处理xml的功能增强了N倍,获取或遍历节点非常之方便,类似于json对像的处理方式。
XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据。将数据加载到 XML 对象时,ActionScript 会分析数据并将其分层结构加载到内存(如果 XML 数据格式有误,它会发送运行时错误)。
利用 XML 和 XMLList 对象的运算符和方法可以轻松遍历 XML 数据的结构。
1、读取外部 XML 文档
可以使用 URLLoader 类从 URL 加载 XML 数据。若要在应用程序中使用以下代码,请将示例中的 XML_URL 值替换为有效的 URL:
var myXML:XML = new XML();
var XML_URL:String = "http://www.87cool.com/sitemap.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener("complete", xmlLoaded);
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
trace("Data loaded.");
}
2、使用点 (.) 运算符和后代存取器 (..) 运算符
使用点 (.) 运算符和后代存取器 (..) 运算符可以访问 XML 对象的子属性。参考下面的 XML 对象:
var myXML:XML =
<order>
<book ISBN="0942407296">
<title>Baking Extravagant Pastries with Kumquats</title>
<author>
<lastName>Contino</lastName>
<firstName>Chuck</firstName>
</author>
<pageCount>238</pageCount>
</book>
<book ISBN="0865436401">
<title>Emu Care and Breeding</title>
<editor>
<lastName>Case</lastName>
<firstName>Justin</firstName>
</editor>
<pageCount>115</pageCount>
</book>
</order>对象 myXML.book 是一个 XMLList 对象,它包含名为 book 的 myXML 对象的子属性。它们是两个 XML 对象,与 myXML 对象的两个 book 属性匹配。
对象 myXML..lastName 是一个 XMLList 对象,该对象包含名为 lastName 的所有后代属性。它们是两个 XML 对象,与 myXML 对象的两个 lastName 匹配。
myXML.book.editor.lastName 对象是一个 XMLList 对象,它包含 myXML 对象的名为 book 的子对象的名为 editor 的子对象的名为 lastName 的所有子对象:在本例中,XMLList 对象只包含一个 XML 对象(值为 "Case" 的 lastName 属性)。
3、访问父节点和子节点
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) // output: Dictionary
4、访问属性
使用 @ 符号(属性标识符运算符)可以访问 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 是首选方法。
5、按属性或元素值过滤
可以使用括号运算符 — ( 和 ) — 过滤具有特定元素名称或属性值的元素。请考虑下面的 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>
以下表达式都是有效的:
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。
如果试图按照可能不存在的属性或元素过滤,则 Flash? Player 和 Adobe? AIR? 将引发异常。例如,以下代码的最后一行产生一个错误,因为第二个 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'));
6、使用 for..in 和 for each..in 语句
ActionScript 3.0 包含 for..in 语句和 for each..in 语句,用于遍历 XMLList 对象。例如,我们来看 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 中的属性:
XML 的一个强大功能是它能够通过文本字符的线性字符串提供复杂的嵌套数据。将数据加载到 XML 对象时,ActionScript 会分析数据并将其分层结构加载到内存(如果 XML 数据格式有误,它会发送运行时错误)。
利用 XML 和 XMLList 对象的运算符和方法可以轻松遍历 XML 数据的结构。
1、读取外部 XML 文档
可以使用 URLLoader 类从 URL 加载 XML 数据。若要在应用程序中使用以下代码,请将示例中的 XML_URL 值替换为有效的 URL:
var myXML:XML = new XML();
var XML_URL:String = "http://www.87cool.com/sitemap.xml";
var myXMLURL:URLRequest = new URLRequest(XML_URL);
var myLoader:URLLoader = new URLLoader(myXMLURL);
myLoader.addEventListener("complete", xmlLoaded);
function xmlLoaded(event:Event):void
{
myXML = XML(myLoader.data);
trace("Data loaded.");
}
2、使用点 (.) 运算符和后代存取器 (..) 运算符
使用点 (.) 运算符和后代存取器 (..) 运算符可以访问 XML 对象的子属性。参考下面的 XML 对象:
var myXML:XML =
<order>
<book ISBN="0942407296">
<title>Baking Extravagant Pastries with Kumquats</title>
<author>
<lastName>Contino</lastName>
<firstName>Chuck</firstName>
</author>
<pageCount>238</pageCount>
</book>
<book ISBN="0865436401">
<title>Emu Care and Breeding</title>
<editor>
<lastName>Case</lastName>
<firstName>Justin</firstName>
</editor>
<pageCount>115</pageCount>
</book>
</order>对象 myXML.book 是一个 XMLList 对象,它包含名为 book 的 myXML 对象的子属性。它们是两个 XML 对象,与 myXML 对象的两个 book 属性匹配。
对象 myXML..lastName 是一个 XMLList 对象,该对象包含名为 lastName 的所有后代属性。它们是两个 XML 对象,与 myXML 对象的两个 lastName 匹配。
myXML.book.editor.lastName 对象是一个 XMLList 对象,它包含 myXML 对象的名为 book 的子对象的名为 editor 的子对象的名为 lastName 的所有子对象:在本例中,XMLList 对象只包含一个 XML 对象(值为 "Case" 的 lastName 属性)。
3、访问父节点和子节点
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) // output: Dictionary
4、访问属性
使用 @ 符号(属性标识符运算符)可以访问 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 是首选方法。
5、按属性或元素值过滤
可以使用括号运算符 — ( 和 ) — 过滤具有特定元素名称或属性值的元素。请考虑下面的 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>
以下表达式都是有效的:
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。
如果试图按照可能不存在的属性或元素过滤,则 Flash? Player 和 Adobe? AIR? 将引发异常。例如,以下代码的最后一行产生一个错误,因为第二个 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'));
6、使用 for..in 和 for each..in 语句
ActionScript 3.0 包含 for..in 语句和 for each..in 语句,用于遍历 XMLList 对象。例如,我们来看 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 中的属性:
发表评论
-
Flex事件效果与渲染
2011-11-28 15:38 857触发器名称 对 ... -
SystemManager: Every Flex application’s best friend
2011-11-16 09:54 636SystemManager: Every Flex appli ... -
preloader
2011-11-14 15:55 468Flex 的默认的 Preloader, 平心而论,不是很 ... -
xml小心障眼
2011-11-11 18:13 0test.xml: <?xml version=& ... -
itemRenderer
2011-11-11 16:15 1266理解itemRenderer Flex中提供了大 ... -
Flex的注释
2011-11-11 15:28 595一.在<mx:script>标签中写注释 1.用 ... -
flex与js交互
2011-11-09 16:47 522一、在JavaScript中调用Flex方法在Flex中可以用 ... -
Flex Data Binding详解
2011-11-09 15:33 537转载-- Data BindIng简单的说就是当绑定源 ... -
callLater解析
2011-11-09 11:10 712转载-- Flash的fl组件和Flex的mx组件 ... -
在Flex中让Tree绑定数据后自动展开树节点
2011-11-09 11:00 660转载-- 用Flex/Flash做开发的同志们应该会 ... -
flex百条常用知识
2011-11-07 11:12 0flex百条常用知识 【 ... -
Flex 自定义事件
2011-11-07 11:09 569Flex 自定义事件 public static co ... -
AS3 数据类型转换 (转)
2011-11-07 10:22 1195AS3 数据类型转换 (转) ... -
flex 数据基础-使用XML和XMLList
2011-11-07 10:08 630flex 数据基础-使用XML和XMLList ... -
flex 数据基础-使用XML和XMLList
2011-11-07 10:07 860flex 数据基础-使用XML和XMLList ... -
Flex自定义事件用法指南
2011-11-06 11:09 630Flex自定义事件用法指南 本文向大家介绍一下Fle ... -
Flex的Array和ArrayCollection
2011-11-06 10:39 5081.array作为控件使用 FLEX3写法: ... -
flex命名空间
2011-11-04 11:17 0Flex 4带给我们的,是全新的命名空间。了解这些命名空间必 ... -
沙箱安全
2011-11-04 11:08 0Flex的最重要两个文件:MXML文件与AS文件。 M ... -
Module通信的几个方法
2011-11-04 11:02 0推荐:启网 - 专业的主机、服务器合租提供商 17hz.ne ...
相关推荐
遍历XML文件是处理XML数据时常见的任务,尤其在解析和操作XML结构时。本篇文章将深入探讨如何利用递归方法遍历XML文件。 一、XML文件结构与解析基础 XML文件由一系列的元素组成,每个元素都有开始标签和结束标签,...
在本篇文章中,我们将深入探讨如何使用 Python 的内置库 `xml.etree.ElementTree` 来遍历 XML 文件中的所有节点,并提取所需的信息。通过一个具体的示例,我们将了解这一过程的实现方式以及需要注意的关键细节。 ##...
我们可以通过遍历XML节点来获取这些数据: ```actionscript function xmlLoaded(event:Event):void { var loadedXML:XML = new XML(event.target.data); var text:String = loadedXML.text; var linkText:String...
在IT行业中,遍历文件和目录以及将数据导出到XML是常见的操作,尤其是在处理大量数据和文件系统交互时。这个“遍历文件文件夹并导出到XML”的例子提供了一个简单的实现,可以帮助初学者理解这两个概念。让我们深入...
加载完成后,可以遍历XML节点,创建对应的菜单项对象。 3. **创建菜单项**:为每个XML节点创建一个`DisplayObject`(如MovieClip),并添加相应的文本或图标。使用`addChild()`方法将子菜单项添加到父菜单项中。 4...
Freemarker是一个强大的模板引擎,常用于Java Web开发中生成动态HTML、XML或其他文本格式的输出。它允许开发者使用简单的语法来控制数据模型,并将其渲染为可读的文本。本实例将详细介绍如何在Freemarker中遍历list...
此函数遍历XML的子节点,并将每个子节点的文本值添加到数组中。这样,我们就可以得到一个包含XML内容的数组。 最后,我们需要一个函数来显示数组中的每行内容。假设我们有一个名为`txtDisplay`的动态文本框,我们...
首先,我们需要了解AS3中如何解析XML。AS3提供了一个内置的XML类,可以方便地加载、解析和操作XML文档。通过`new XML()`创建XML对象,然后使用`load()`方法加载XML文件,最后通过`addEventListener(Event.COMPLETE, ...
接下来,我们需要遍历XML节点来获取图片数据。AS3的XML类提供了强大的查询功能,如`descendants()`、`child()`和`@attribute`等方法。下面是如何访问XML中每个图片元素的示例: ```actionscript for each (var ...
在AS3中,XML是一种常见的数据交换格式,XML转换类可以帮助解析XML文档,并根据其结构创建相应的AS3对象。这个过程通常涉及到递归遍历XML节点,为每个节点创建对应的属性或子对象,对于XML属性则映射到对象的属性值...
在AS3苹果滑动菜单中,XML文件通常包含以下结构: ```xml 菜单1" link="page1.html"> 子菜单1.1" link="page1-1.html"/> 子菜单1.2" link="page1-2.html"/> 菜单2" link="page2.html"/> ... ``` 这个XML...
接下来,我们需要在AS3中解析这个XML文件。可以使用`load()`方法加载XML文件,然后使用`parseXML()`方法解析它: ```as3 var xmlLoader:URLLoader = new URLLoader(); xmlLoader.dataFormat = URLLoaderDataFormat....
在ActionScript 3.0(简称AS3)中,引入了一种全新的XML处理机制——E4X(ECMAScript for XML)。这标志着AS3在处理XML数据方面迈出了重要的一步,它不仅简化了开发流程,而且提高了代码的可读性和维护性。 #### E4...
在AS3中,我们可以利用XML文件作为数据源,动态地构建和更新网站的交互式菜单。这样做的优点在于,非编程背景的人员也能通过编辑XML文件来调整菜单内容,而无需接触代码。 首先,我们需要创建一个XML文件,如`...
解析XML配置文件通常涉及遍历XML节点,提取所需信息。假设我们的XML配置文件如下: ```xml <!-- 更多设置... --> ``` 我们可以创建一个数组来存储这些配置项: ```actionscript var configArray:Array = ...
- 使用循环遍历XML数据,根据页码和每页元素数量筛选出要显示的部分。 ```actionscript var pageSize:int = 10; // 每页显示10个元素 var currentPage:int = 1; // 当前页码 var startIndex:int = (currentPage - ...
2. **解析XML**:AS2.0脚本使用`XML()`函数加载XML文件,然后通过遍历XML树来获取数据。 3. **创建UI元素**:根据解析出的XML数据,AS2.0创建相应的舞台对象,如MovieClip或Button,设置它们的文本、位置、事件监听...
接下来,为了能够有效地从 XML 格式的参数中提取出具体的信息,我们需要编写一个用于解析 XML 节点值的函数。这个函数可以帮助我们在存储过程中更方便地处理 XML 输入。 以下是一个示例函数: ```sql CREATE ...
3. 解析XML中的图片信息:遍历XML节点,获取图片URL和3D位置信息。 ```actionscript for each (var imageNode:XML in xmlData.children()) { var imageUrl:String = imageNode.@src; var x:Number = Number(image...