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

Flex4 XML/XMLList 常用操作

发布时间:2020-12-15 03:42:31 所属栏目:百科 来源:网络整理
导读:XMLList操作 Flex对xml提供了很多强大而灵活的操作。相对于其他语言,flex对xml的格式要求不那么苛刻,只要符合基本格式语法的字符串,flex能非常简单的转换成xml操作。 而实际上,xml是一种非常方便的层次数据描述格式。 ? XML和XMLList的关系 XML的很多操

XMLList操作

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

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

? XML和XMLList的关系

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

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

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

?创建XML/XMLList对象

as支持直接xml语法定义。

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

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

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

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

?向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 ); //将新节点添加到当前节点的子节点的最后位置。

? 删除子节点

?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()];

查询子节点

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

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

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

????? child…

}

? 访问节点属性

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

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

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

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

? 测试代码


[html] view plaincopyprint?

    <s:NavigatorContent xmlns:fx="http://ns.adobe.com/mxml/2009"  
         xmlns:s="library://ns.adobe.com/flex/spark"  
         xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">  
     <s:layout>  
      <s:VerticalLayout paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5"/>  
     </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{ 
         
        var x:XML = xml.children()[0]; 
        if( !x ) return; 
         
        delete xml.children()[x.childIndex()]; 
         
        xmltxt.text = xml.toXMLString(); 
        xmllist = xml.children(); 
        xmllisttext.text = xmllist.toXMLString(); 
         
        xmltxt.text += "nn"+ 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="{xml.toXMLString()}" id="xmltxt" width="500" height="100%"/>  
     <s:Label text="XMLList contant"/>  
     <s:TextArea text="{xmllist.toXMLString()}" id="xmllisttext" width="500" height="100%"/>  
     <s:Label text="QueryResult"/>  
     <s:TextArea id="queryResult" width="500" height="100%"/>   
    </s:NavigatorContent>  

(编辑:李大同)

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

    推荐文章
      热点阅读