Flex XML/XMLList 常用操作
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=”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)<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> 转载地址:http://www.360doc.com/content/13/0425/18/9943320_280892286.shtml (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – “git push heroku master”预编译资产失
- oracle中使用base64编码、解码
- 自定义PopupWindow+xml布局+Anim
- 在购物车中使用ajax在woocommerce中移除产品
- XML是什么,它可以做什么?——写给XML入门者
- reactjs – React 16.7中的React Hooks问题TypeError:Obje
- Flash务实主义(三)——最短路径原则(下)
- React native (4)--props、state、style、布局
- c# – 使用Linq加入多个IEnumerable <>
- C/C++程序开发中实现信息隐藏的三种类型