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的写法:

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

Flex之旅:第一部分:flex必备基础知识积累(5)---XML, XMLList, XMLListCollection的区别(一)_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。