加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flexXML

发布时间:2020-12-15 04:04:48 所属栏目:百科 来源:网络整理
导读:XML 是一种结构化的描述数据形式,因其简单,灵活,尤其是在数据交换和可移植等优点现 已成为事实上的工业标准。 ? ActionScript 3.0 新增了新的操作XML的语法,即ECMAScript for XML,也叫E4X,提供一种比 Document Object Model (DOM)更简单更容易访问XML

XML 是一种结构化的描述数据形式,因其简单,灵活,尤其是在数据交换和可移植等优点现

已成为事实上的工业标准。

?

ActionScript 3.0 新增了新的操作XML的语法,即ECMAScript for XML,也叫E4X,提供一种比

Document Object Model (DOM)更简单更容易访问XML的新方式。使用E4X,你会发现操作XML

比以前更简单了

ActionScript 3.0 包含一些用于处理 XML 结构化信息的类。下面列出了两个主类:
■ XML:表示单个 XML 元素,它可以是包含多个子元素的 XML 文档,也可以是文档中
的单值元素。
■ XMLList:表示一组 XML 元素。当具有多个“同级”(在 XML 文档分层结构中的相
同级别,并且包含在相同父级中)的 XML 元素时,将使用 XMLList 对象。例如,
XMLList 实例是使用以下一组 XML 元素(可能包含在 XML 文档中)的最简便方法:
<artist type="composer">Fred Wilson</artist>
<artist type="conductor">James Schmidt</artist>
<artist type="soloist">Susan Harriet Thurndon</artist>

技术名词:

XML document :

包含XML的文件,也指读取和发送XML的数据,XML文档的概念不要和XMLDocument类搞混。

XML包 :

一个XML包指从整个XML文档中取出的片断

XML 节点e :

XML最基本的块,节点可以是元素,文本节点,属性等等

XML 元素 :

这个术语和"Tag"意义类似,更确切地说,元素包含tags。元素必须有开始和结束标签

(<element></element>)或(<element />).

Root 节点 :

XML层级元素中最顶层的元素

Text 节点 :

包含文本的节点,一般都在元素里面

Attribute(属性):

元素的一部分,如<element name="value">,name="value"就是属性.

XML 声明 :

典型的申明如<?xml version="1.0" ?>.

XML 树 :

XML 数据的节点层级构成XML 树

可以通过{}创建动态xml

添加XML元素:

a:通过newElement属性来添加新的元素

?

Flex代码??

收藏代码

  1. var?example:XML?=?<example?/>;??
  2. example.newElement?=?<newElement?/>;??
  3. ??
  4. ??

?
b:用(.)运算符

Flex代码??

收藏代码

    example.emptyElement?=?"";??
  1. ??
?

c:用([ 和])

Flex代码??

收藏代码

    var?id:int?=?10;??
  1. example[?"user"?+?id?]?=?"";??
  2. ?上述三种职能插入到尾部,可用insertChildBefore( )和insertChildAfter( ) 方法来控制插入的位置

    Flex代码? ); example = example.insertChildAfter( example.two,); " quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">?

    收藏代码

      var?example:XML?=?<example/>;??
    1. example.two?=?"";??
    2. example?=?example.insertChildBefore(?example.two,?<one?/>?);??
    3. example?=?example.insertChildAfter(?example.two,?<three?/>?);??
    4. 在XML元素中添加属性?:?使用E4X的@ 操作符

      Flex代码??

      收藏代码

        var?example:XML?=?<example><someElement/></example>;??
      1. example.someElement.@number?=?12.1;??
      2. example.someElement.@string?=?"example";??
      3. example.someElement.@boolean?=?true;??
      4. example.someElement.@array?=?["a",?null,?7,?undefined,?"c"];??
      5. ?但是有时如果属性名包含一些特殊符号,则不能用@操作符,必须加上[]操作符

        example.someElement.@["bad-variable-name"] = "yes";

        在[]里还可用表达式产生动态属性名,这是种很实用的技巧:

        example.someElement.@["color" + num] = "red";

        读取XML树中的元素?:

        使用elements( ) 方法返回XMLList 类型的所有元素,并用for each 循环遍历

        Flex代码? This is a text node ; for each ( var element:XML in menu.elements( ) ) { trace( element.@label ); }" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">?

        收藏代码

          var?menu:XML?=?<menu>??
        1. <menuitem?label="File">??
        2. <menuitem?label="New"/>??
        3. </menuitem>??
        4. <menuitem?label="Help">??
        5. <menuitem?label="About"/>??
        6. This?is?a?text?node??
        7. </menu>;??
        8. for?each?(?var?element:XML?in?menu.elements(?)?)?{??
        9. trace(?element.@label?);??
        10. }??

        ?elements( ) 方法只返回下一级的子元素节点,这里面不包括文本节点和下一级节点.要向访问整个XML结构,还需进行递归循环处理

        Flex代码? This is a text node ; walk( menu ); function walk( node:XML ):void { for each ( var element:XML in node.elements( ) ) { trace( element.@label ); // Recursively walk the child element to reach its children walk( element ); } }" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">?

        收藏代码

          walk(?menu?);??
        1. function?walk(?node:XML?):void?{??
        2. for?each?(?var?element:XML?in?node.elements(?)?)?{??
        3. //?Recursively?walk?the?child?element?to?reach?its?children??
        4. walk(?element?);??
        5. }??
        6. ?通过节点名字来查找元素?:?直接使用E4X 的. 加上属性名语法来查找元素

          var fruit:XML = <fruit><name>Apple</name></fruit>;

          trace( fruit.name );// 显示: Apple

          var author:XML = <author><name><firstName>Darron</firstName></name></author>;

          trace( author.name.firstName );// 显示: Darron

          还有种简便的方法,即使用双点操作符(..)来跳过一级访问,如:

          trace( author..firstName );// 显示: Darron

          当有多个元素节点具有相同名称时,可通过索引值访问,这有点像数组,使用中括号

          Flex代码??

          收藏代码

            var?items:XML?=?<items>??
          1. <item>??
          2. <name>Apple</name>??
          3. <color>red</color>??
          4. </item>??
          5. <name>Orange</name>??
          6. <color>orange</color>??
          7. </items>;??
          8. trace(?items.item[0].name?);//?显示:?Apple??
          9. trace(?items.item[1].name?);//?显示:?Orange??

          ?元素节点,但又不知道有多少个,可用for each 循环遍历

          Flex代码??

          收藏代码

            //?使用双点操作符??
          1. for?each?(?var?name:XML?in?items..name?)?{??
          2. trace(?name?);??
          3. ?也可用[]操作符来访问:

            var nodeName:String = "color";

            var fruit:XML = <fruit><color>red</color></fruit>;

            trace( fruit[nodeName] );// Displays: red

            需要注意的是[]操作符不能和双点操作符一起用

            trace( fruit..[nodeName] ); // 导致编译错误

            text( ) 方法可正确返回文本节点内容:

            Flex代码??

            收藏代码

              var?fruit:XML?=?<fruit>??
            1. An?apple?a?day...??
            2. </fruit>;??
            3. for?each?(?var?textNode:XML?in?fruit.text(?)?)?{??
            4. trace(?textNode?);//?显示:?An?apple?a?day...??
            5. 读取元素的属性 :

              使用attributes( ) 方法返回指定元素的属性列表,或者通过名称用E4X的@操作符或attribute( )

              Flex代码?; var attributes:XMLList = fruit.attributes( ); trace( attributes[0] );// 显示: Apple trace( attributes[1] );// 显示: red" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">?

              收藏代码

                var?fruit:XML?=?<fruit?name="Apple"?color="red"?/>;??
              1. var?attributes:XMLList?=?fruit.attributes(?);??
              2. trace(?attributes[0]?);//?显示:?Apple??
              3. trace(?attributes[1]?);//?显示:?red??

              ?name( ) 方法可显示出属性名

              Flex代码?; for each ( var attribute:XML in fruit.attributes( ) ) { trace( attribute.name( ) + " = " + attribute.toString( ) ); }" quality="high" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer">?

              收藏代码

                for?each?(?var?attribute:XML?in?fruit.attributes(?)?)?{??
              1. trace(?attribute.name(?)?+?"?=?"?+?attribute.toString(?)?);??
              2. ?如果属性名含有特殊字符,可用[]进行访问

                使用delete 关键字删除元素,文本节点和属性 ;delete只能一次删除一个节点,如果要删除多个节点,可通过for循环进行删除

                (编辑:李大同)

                【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读