s3比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 中的属性:

var total2:Number = 0; 
for each (var prop:XML in myXML.item) 

    total2 += prop.@quantity * prop.price; 
}

以上内容都是从flash cs4的帮助文档中整理出来的。

转载于:https://www.cnblogs.com/as3lib/archive/2012/07/13/2590712.html

AS3 XML全部用法相关推荐

  1. as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析

    html和xml中的转义字符在Flash as3中的用法浅析 來源:互聯網  2009-01-04 23:28:37  評論 在as3中使用特殊字符的时候,不小心就会出现错误,要么字符没有被显示,要么 ...

  2. decorators.xml的用法 (转)

    from :https://www.cnblogs.com/zhangxiaopeng/p/5442776.html decorators.xml的用法 (转) spring,hibernate框架做 ...

  3. 常用的JS与XML结合用法 简单示例

    用法1:直接转为html类型(用xsl显示xml信息) 用法2:通过数据岛取值 用法3:xml数据排序 用法4:取到单个值 ----------- 用法1:直接转为html类型(用xsl显示xml信息 ...

  4. SQL SERVER FOR XML PATH 用法

    有时候我们需要把多行数据,合并成一行显示,并用逗号或者其他方式分隔显示,这时候我们可以使用FOR XML PATH的方式,来实现需求.测试数据如下: --测试数据 if not object_id(N ...

  5. python:xml模块用法-xml处理、修改、删除

    xmltest.xml内容如下: <data> <country name="Liechten"> <rank updated="yes&q ...

  6. DOM4J对于XML的用法

    一.基本使用方式 语法 1.获取根元素 Element root = document.getRootElement(); 2.获取某个元素下的子元素 Element db_element = roo ...

  7. XML Schema用法

    你现在应该知道XML只说明数据的结构而并不关心数据是如何具体描述的.数据是否正确.XML文档的强制性结构化需求是通过DTD(文档类型说明)来实现的.那就是本系列文章中先前讲述的主题.在本文里,我们概要 ...

  8. T_SQL的 FOR XML PATH 用法

    T_SQL的 FOR XML PATH FOR XML PATH 有的人可能知道有的人可能不知道,其实它就是将查询结果集以XML形式展现,有了它我们可以简化我们的查询语句实现一些以前可能需要借助函数活 ...

  9. XML DTD用法【转载】

    简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 内部的 DOCTYPE 声明 假 ...

最新文章

  1. Matlab读和写图像需要注意的问题
  2. Selenium自动化中DOM,XPATH,CSS定位Web页面对象的优劣性分析
  3. 应用在vue项目里的axios使用方法
  4. 设计模式---单例模式(多线程下的单例模式)
  5. 可持久化数据结构加扫描线_结构化光扫描
  6. LeetCode MySQL 1853. 转换日期格式(日期格式化)
  7. 如何ping端口_干货 | 如何正确处理常见的8大网络故障
  8. [COCOS2DX-LUA]0-001.利用ClippingNode实现放大镜功能
  9. Linux 内核的测试和调试(1)
  10. java 开发电商平台,JAVA项目实战开发电商项目案例(一)前后端项目分离
  11. crmeb知识付费二开文档
  12. 如何制作关于pos.txt序列的文件
  13. windows搭建wordpress方法-windows搭建wordpress教程
  14. aspose.words复制插入同一word文档中的某个页面
  15. iphone12绿色好看 ,相比被全民吐槽的蓝色,绿色是怎么做到零差评的
  16. 动视暴雪宣布裁员约8%  780多名员工将被裁-千氪
  17. jQuery.Deferred对象
  18. 网络舆情危及企业经营如何应对?舆情优化十大解决方案!
  19. 20年的星际争霸,再回首
  20. “2019世界计算机大会”新闻发布会在京召开

热门文章

  1. NAME:WRECK 漏洞影响近亿台物联网设备
  2. 谷歌发布基于浏览器的 Spectre 攻击的 PoC exploit
  3. Jenkins 文档特别兴趣小组
  4. 理解Angular的Reactive Form
  5. 体验 Vista Speech Recognition,使梦想成为可能
  6. IDEA 忽略CSS错误
  7. 如果要在mFC客户区添加控件怎么办
  8. 验证码识别服务提供商
  9. JavaEE程序员必读图书大推荐
  10. 手动同步OCS的通讯簿