引用:http://songwensheng.iteye.com/blog/644360
示例如下:Tree.mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="" creationComplete="menu.send();" layout="absolute"> <mx:Script> <![CDATA[ import mx.collections.ArrayCollection;import mx.rpc.events.ResultEvent;import mx.controls.Alert; [Bindable]private var myData:ArrayCollection;private var menus2:XML;private var results:XMLList;private function resultHandler(event:ResultEvent):void { menus2 = XML(event.result); //proto子节点(即Field节点)xml对象的集合 var list:XMLList = menus2.packet.proto.children(); //删除hide的节点 for(var i:int=0;i<list.length();i++) { if(") { delete list[i];//删除field中属性hide的field节点 Alert.show("del"); }// if(") {//原始操作方法// delete menus2.packet.proto.field[i];//删除节点// } //位于列表下第三个对象是否有showname属性 var li:XMLList = list[i].attribute("showname"); if(li.length()==0) {//没有showname属性 //添加一个showname属性值是show的值 list[i].@showname=list[i].@show; } } //增加属性 //menus2.packet.proto.field[0].@hello="helloword"; var results:XMLList = menus2.packet.proto; Alert.show(results); //将集合绑定到tree上 treeMenu.dataProvider = results;}private function modify():void { delete menus2.packet.proto.field; Alert.show(menus2.packet.proto.toString());} ]]> </mx:Script><mx:HTTPService id="menu" url="erb2.xml" result="resultHandler(event)" resultFormat="xml" /><mx:Tree id="treeMenu" labelField="@showname" width="50%" height="100%"></mx:Tree><mx:Button label="修改" click="modify()" x="427" y="53"/></mx:Application>xml文件内容为:erb2.xml:
<?xml version="1.0"?>
<pdml version="0" creator="wireshark/1.0.8"><packet> <proto name="geninfo" pos="0" showname="General information" > <field name="num" pos="0" hide="yes" show="1" showname="Number" value="1"/> <field name="len" pos="0" show="115" showname="Packet Length"/> <field name="len" pos="0" show="noshowname"/> </proto></packet></pdml>首先是修改:
修改XML节点其实比较简单,创建XML对象后,直接调用如下的方法:
A.insertChildBefore(a,b);//在a节点前插入b节点
A.insertChildAfter(a,b);//在a节点之后插入b
A.appendChild(a);//附加a文本子节点
A.prependChild(a);//把a加到前面
为a节点添加一个名为b的属性,其值为c
示例:(中间没有中断)
//创建XML
var A:XML=<a />;
//加入一个节点b
A.b=<b />;
//加入一个节点c,且值为11,如果存入数组,值为逗号隔开的文本,其中null,undefined将解析为空""
A.c="11";
//输出为:<a><b /><c>11</c></a>
trace(A);
//在c节点前插入一个<d />节点,insertChildAfter()等方法同理
A = A.insertChildBefore(A.c,<d />);
//输出内容:(略)
trace(A);
//添加属性
A.c.@e="true";
;
//输出内容:。。。
trace(A);
读取XML节点:
A.elements();//返回A节点下的所有元素
A.a;//返回A节点下的a节点的内容,如果有多个a节点,则使用a[n]来指定(n从0开始),返回后使用toString(),int(),Number()方法转换。
返回A节点的a属性的值,老方法attribute(a)还可以用~不过注意里面的a为属性名称~不过:
爆发吧~attribute用不着了~通配符*和@代替了。。。郁闷。。。
以上内容就不用示例了吧~~使用方法和写入方式类似~~~
删除:
使用关键字delete,后加个节点或属性或。。。的,就和读节点的方式一样就可以了。。。
例如:
//删除了A节点的a节点。。。
delete A.a;
//删除了A节点的b属性
delete ;