1       XML、XMLList操作

Flex对xml提供了很多强大而灵活的操作。相对于其他语言,flex对xml的格式要求不那么苛刻,只要符合基本格式语法的字符串,flex能非常简单的转换成xml操作。

而实际上,xml是一种非常方便的层次数据描述格式。

1.1     XML和XMLList的关系

XML的很多操作最终都是通过XMLList对象来实现的。

XML是一个节点,XMLList是一组节点。

XML的字节点、属性节点在flex中均通过XMLList来描述。

1.2     创建XML/XMLList对象

as支持直接xml语法定义。

var xml:XML = <root><node title="newnode"/></root>;

也可将xml格式的字符串直接转成xml对象

var xml:XML = new XML("<root/>");

xml、xmllist对象均可通过toXMLString()转成格式化的xml字符串。

1.3     向XML节点新增子节点

1.通过appendChild方法,将新节点增加到现有子节点的最后

2.通过insertChildAfter方法,将新节点添加到指定字节点之后;

3.通过insertChildBefore方法,将新节点添加到指定字节点之强。

如:var x:XML = new XML(<r />);  //新建一个节点

x.@title = " index is:"+String(xml.children().length()); //为节点添加一个title属性

xml.appendChild( x ); //将新节点添加到当前节点的子节点的最后位置。

1.4     删除子节点

XML节点的删除操作通过 delete 操作符实现,支持按条件删除

1.删除第n个子节点:delete xml.children[n];

2.删除符合条件的子节点: delete xml.children()(@type ==  “car” && @color == “red”);

xml = <vehicles>

<vehicle type=”car” color=”yellow”/>

<vehicle type=”truck” color=”gray”/>

<vehicle type=” truck” color=” gray”/>

<vehicle type=”car” color=”red”/>

<vehicle type=”car” color=”red”/>

<vehicle type=”car” color=”black”/>

</vehicles>;

3.删除所有字节点:delete xml.*;

4.删除已知子节点node;  delete xml.children[node.childIndex()];

1.5     查询子节点

查询属性值符合条件的字节点:var children = xml.children().(@propertyname==”value” ) 可以通过 && () ||进行条件组合

遍历子节点,可递归访问所有字节点。

for each(var child:XML in xml.children()){

child…

}

1.6     访问节点属性

通过@操作符进行属性的读写,如:

xml.@title = “asdfasdf”;  Alert.show(xml.@title);

还可以通过[]访问节点属性,如:

xml[“@title”] = “asdfasdfasdf”;   Alert.show(xml[“@title”]);

1.7    测试代码(flashbuilder4.5)

 html] view plaincopyprint?
 <s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009"
      xmlns:s="library://ns.adobe.com/flex/spark"
      xmlns:mx=">
  <s:layout>
   <s:VerticalLayout paddingBottom="/>
  </s:layout>  

  <fx:Declarations>
   <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  </fx:Declarations>
  <fx:Script>
   <![CDATA[
    import mx.controls.Alert; 

    [Bindable]
    private var xml:XML = <root>
     <r title="package1"/>
     <r title="package2"/>
    </root>; 

    [Bindable]
    private var xmllist:XMLList = xml.children(); 

    private function appendToXML():void{ 

     var x:XML = new XML(<r title="diagram"/>);
     x.@title = "package"+String(xml.children().length());
     xml.appendChild( x ); 

     xmltxt.text = xml.toXMLString();
     xmllisttext.text = xmllist.toXMLString();
    } 

    private function deleteXMLNode():void{ 

     ];
     if( !x ) return; 

     delete xml.children()[x.childIndex()]; 

     xmltxt.text = xml.toXMLString();
     xmllist = xml.children();
     xmllisttext.text = xmllist.toXMLString(); 

     xmltxt.text += "\n\n"+ x.toXMLString() +"has be deleted!";
    } 

    private function queryChild():void{
          queryResult.text = xml.children().(@title=="package2" || @title=="package3").toXMLString();
    }
   ]]>
  </fx:Script>
  <s:HGroup verticalAlign="middle">
   <s:Label text="XML contant"/>
   <s:Button label="append to XML" click="appendToXML()"/>
   <s:Button label="delete from 0" click="deleteXMLNode()"/>
   <s:Button label="delAllChild" click="delete xml.*; xmltxt.text = xml.toXMLString();"/>
   <s:Button label="queryChild" click="queryChild()"/>
  </s:HGroup>  

  <s:TextArea text=" height="100%"/>
  <s:Label text="XMLList contant"/>
  <s:TextArea text=" height="100%"/>
  <s:Label text="QueryResult"/>
  <s:TextArea id=" height="100%"/>
 </s:NavigatorContent>  

最新文章

  1. Cygwin中解决vi编辑器方向键和Backspace键不好使、安装vim的方法
  2. TCP协议学习记录 (一) ICMP时间戳请求
  3. CentOS7下安装MYSQL5.7
  4. MySql中使用日期函数获取昨天的数据
  5. Oracle 支持正则表达式的函数
  6. ASP.NET(C#)中的try catch异常处理机制
  7. Python 基础教程中的问题及解决方案(1)
  8. visual leak dector内存泄漏检测方法
  9. [AHOI2006]基因匹配
  10. Magic CSS3 一款独特的CSS3动画特效包
  11. 游戏编程算法与技巧 Game Programming Algorithms and Techniques (Sanjay Madhav 著)
  12. python基础知识8---条件和循环
  13. 安装nodeJs静态服务器(NodeJs Express MVC 框架)
  14. js中布尔值为false的六种情况
  15. MySQL参数调优
  16. 08-DML(插入、更新、删除)
  17. 2. Mysql数据库的入门知识
  18. spring xml的配置
  19. Java应用集群下的定时任务处理方案(mysql)
  20. Sublime Text 3中文乱码问题解决(最新)

热门文章

  1. 关于functioncharts饼状图篇
  2. 转:移动建站工具(一):分秒钟将Web网站移动化
  3. 【每日一记】unity3d 图片置灰shader
  4. [ACM] hdu 4248 A Famous Stone Collector (DP+组合)
  5. Swift学习笔记(二)——常量与变量
  6. grpc编译错误解决
  7. 12.C语言控制窗口
  8. childNodes.length和form.length的不同
  9. TabHost的自定义
  10. 学golang之前都需要哪些前置知识?