Flex之旅:第一部分:flex必备基础知识积累(5)---XML, XMLList, XMLListCollection的区别(一)

XML

XML的特点就是有根节点。


1来看看代码直接赋值xml的写法:


<?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(event)" xmlns:vo="vo.*">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
                                // 1直接赋值
				var xml1:XML = 
				<root>
					<node age="18" label="tomcat" />
					<node age="20" label="java" />
					<node age="30" label="webLogic" />
				</root> ;
					
				trace(xml1);
				// 2通过String,作为参数,new出来
				var str:String = "<root>"+
					"<node age='118' label='1tomcat' />"+
					"<node age='120' label='1java' />"+
					"<node age='130' label='1webLogic' />"+
				"</root>";
				
				var xml2:XML = new XML(str);
				
				trace(xml2);
			}
			
		]]>
	</fx:Script>
	
	
	<fx:Declarations>
	
	</fx:Declarations>
	
</s:Application>

注意:

  • xml 的根标签和子标签可以随便命名
  • 但是标签里面不能为空
  • 语句结束的时候,有";" 号

2再来看看标签定义xml的方法:

<?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(event)" xmlns:vo="vo.*">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				trace(x1);
			}
			
		]]>
	</fx:Script>
	
	
	<fx:Declarations>
		<fx:XML id="x1"   xmlns="">
			<root>
				<node age="18" label="tomcat" />
				<node age="20" label="java" />
				<node age="30" label="webLogic" />
			</root>
		</fx:XML>
	</fx:Declarations>
	
</s:Application>

注意:此时不可以有";" 号,在</root>结尾


3再来看看代码,source加载xml的写法:

<?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(event)" xmlns:vo="vo.*">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				trace(x1);
			}
			
		]]>
	</fx:Script>
	
	<fx:Declarations>
		<fx:XML id="x1" source="src/person.xml" /> 
	</fx:Declarations>
	
</s:Application>

其中person.xml的定义如下:


<?xml version="1.0" encoding="utf-8"?>
<root>
	<node age="18" label="tomcat" />
	<node age="20" label="java" />
	<node age="30" label="webLogic" />
</root> 

注意:此方法, 载入的xml是被编译进swf里的,也就是说编译以后,xml文件就没用了。但是要注意的是,如果xml文件过大,会造成swf文件也过大!!!



4再来看看代码,URLLoader加载xml的写法:

比如我现在有如下测试项目:



  • person.xml放在了xml目录下。
  • person.xml的定义上上面的相同。
  • 项目编译成功后,person.xml放在了xml目录下,xml目录自动的放在了bin-debug目录下
  • 此时,XMLTest.swf就会通过URLLoader加载到person.xml
  • 主程序,XMLTest.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(event)" xmlns:vo="vo.*">
	<fx:Script>
		<![CDATA[
			import mx.events.FlexEvent;
			
			private var loader:URLLoader = new URLLoader();
			protected function application1_creationCompleteHandler(event:FlexEvent):void
			{
				loader.addEventListener(Event.COMPLETE, setResult);
				var req:URLRequest = new URLRequest();
				req.url = "xml/person.xml";
				loader.load(req);
				
			}
			
			private function setResult(event:Event):void {
				var loader:URLLoader = event.target as URLLoader;
				var data:XML=XML(loader.data);
				trace(data);
			}
			
		]]>
	</fx:Script>
	
</s:Application>

注意:

  • URLLoader加载xml的这种方式,xml文件不会被编译到swf里面。
  • URLLoader加载xml的这种方式还可以加载外部网站url的xml。








  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值