怎样在Flex中使用外部xml文档

本文介绍了在Flex中加载和解析外部XML文档的三种不同方法。第一种方法是使用<mx:XML>标签直接加载XML文件,并通过XPath获取数据;第二种方法是使用<mx:DataProvider>标签将XML文档转换为对象数组,便于数据绑定;第三种方法是利用<mx:HTTPService>进行异步加载XML,适用于避免缓存问题。
转自http://www.flashshe.com/blog/post/21.html
如果要在Flash中使用外部XML文档,只需通过XML类的XML.load()方法载入外部XML文档即可。但是在Flex中却不能这样,那怎么办呢?下面就为大家介绍三种方法。

假设外部XML文档内容如下(文件名称为 test.xml):

<?xml version="1.0" encoding="utf-8"?>
<root>
<news>
<title>one</title>
<data>1</data>
</news>
<news>
<title>two</title>
<data>2</data>
</news>
</root>


并且test.xml文件和我们将要建立的MXML文件在同一目录下。
一、使用 标签
使用文本编辑器或者flex builder建立如下的MXML文档:


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initApp()">
<mx:Script>
<![CDATA[
function initApp(){
myText.text = "有" + myXML.childNodes.length + "条信息。";
myText.text += "第一条信息标题为:" + myXML.firstChild.firstChild.firstChild.nodeValue;
}
]]>
</mx:Script>
<mx:XML id="myXML" source="test.xml" />

<mx:Text id="myText" />
</mx:Application>


如果你在Flash中使用过XML,我相信上面的代码对于你来说一目了然,没有任何解释的必要。
运行此MXML文档,可以看到Text组件的内容为:有2条信息。第一条信息标题为:one。
二、使用 标签
将上面的MXML文档稍作修改:
1、把“”换成“”;
2、把initApp()函数修改为


function initApp(){
var temp:Object = myModel.news;
myText.text = "有" + temp.length + "条信息。";
myText.text += "第一条信息标题为:" + temp[0].title;
}


运行此MXML文档,可以看到Text组件的内容为:有2条信息。第一条信息标题为:one。
当使用标签时,Flex将外部XML文档转换成对象,而不再把它看成是一个XML文件。
将test.xml转换成对象后,此对象相当于:

root = [{title:"one",data:"1"},{title:"one",data:"1"}];
三、使用 标签
这种方法我并不推荐使用,因为当第一次运行MXML文档后,外部XML文件会放入到客户机的缓存中,
当你的服务器上的XML文件更新后在客户端却不能马上进行相应的更新,因为你客户端的网页从缓存中读入了旧的XML文件。
在此我只提供MXML文件,不会做解释,感兴趣的读者可自行研究。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initApp()">
<mx:Script>
<![CDATA[
function initApp(){
hs_ima.send();
}

function onLoad(Void):Void{

var myXML:Object = hs_ima.result;

//然后你可以把myXML当作一个XML对象来使用,像介绍的第一种方法一样
myText.text = "有" + myXML.childNodes.length + "条信息。";
myText.text += "第一条信息标题为:" + myXML.firstChild.firstChild.firstChild.nodeValue;

}

]]>
</mx:Script>

<mx:HTTPService id="hs_ima" url="test.xml" useProxy="false" result="onLoad()" resultFormat="xml" showBusyCursor="true" />

<mx:Text id="myText" />
</mx:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值