Flex之旅:第一部分:flex必备基础知识积累(5)---XML, XMLList, XMLListCollection的区别(一)
原创
©著作权归作者所有:来自51CTO博客作者茜茜770的原创作品,请联系作者获取转载授权,否则将追究法律责任
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。