Flex 将xml转成对象

刚刚开始学Flex最近有个项目用到了将xml结构用对象来存储起来下面就将我学到的东西贴出来和大家一起分享下不足之处希望多多指点指点^_^

本文所用到的xml:

<?xml version="1.0" encoding="UTF-8"?>
<data value="test">
	<data1  value="test01">
		<id value="test02"/>
		<name  value="test03"/>
		<des  value="test04"/>
	</data1>
	<data2  value="test05">
		<id  value="test06"/>
		<name value="test07"/>
		<des  value="test08"/>
	</data2>
	<data3 value="test09">
		<id  value="test10"/>
		<name  value="test11"/>
		<des  value="test12"/>
	</data3>
	<data4 value="test13">
		<id  value="test14"/>
		<name value="test15"/>
		<des  value="test16"/>
	</data4>
</data>


(1)首先建立一个存放xml模型类GCNode.as

package test
{
	public class GCNode
	{
		public function GCNode()
		{
		}
		
		public var name:String;
		
		public var pNode:GCNode;
		public var children:Vector.<GCNode>;
	}
}


(2)建立mxml类

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
			   xmlns:s="library://ns.adobe.com/flex/spark" 
			   xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
			   creationComplete="application1_creationCompleteHandler()">
	<s:layout>
		<s:VerticalLayout horizontalAlign="center" verticalAlign="middle"/>
	</s:layout>
	<fx:Declarations>
		<!--url存放xml文件的地址用来填充树 -->
		<s:HTTPService id="hs" url="data/data2.xml" resultFormat="e4x" result="hs_resultHandler(event)"/>
	</fx:Declarations>
	<fx:Script>
		<![CDATA[
			import mx.rpc.events.ResultEvent;
			[Bindable]
			private var d:XML;

			protected function application1_creationCompleteHandler():void
			{
				hs.send();
			}
			
			public function initTree(pp:XML,Node:GCNode):void
			{
				var tempList:XMLList=pp.children();
				Node.name=pp.@value;
				//如果该节点没有子节点就附个new的list否侧会报空对象
				if(!Node.children){
					Node.children=new Vector.<GCNode>();
				}
				for each(var xml:XML in tempList)
				{
					var tempNode:GCNode=new GCNode();
					tempNode.name=xml.@value;
					tempNode.pNode=Node;
					Node.children.push(tempNode);
					initTree(xml,tempNode)
				}
			}
			//回调函数
			protected function hs_resultHandler(event:ResultEvent):void
			{
				d = event.result as XML;
				var treeNode:GCNode=new GCNode();
				//递归填充treeNode
				initTree(d,treeNode);
				trace(treeNode.name);
			}
		]]>
	</fx:Script>

</s:Application>


最后通过debug模式可以查看该treeNode对象的结构如下图,该对象利用自己的children  list属性存放了子节点利用pNode记住了自己的父节点


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值