首页 > 开发 > Xml > 正文

19.1.加载一个XML文件

2023-07-12 18:51:56
字体:
来源:转载
供稿:网友
19.1.1. 问题
如何加载及处理一个外部XML 文件?
19.1.2. 解决办法
使用HTTPService 组件来加载XML 文件, 并把resultFormat 设置为”xml”。或者, 使用flash.net.URLLoader 类来创建一个URLLoader 实例, 并调用load 方法来加载XML 文件。
19.1.3. 讨论
在默认的情况下, HTTPService 组件会把任何加载的XML 转换成一个ActionScript 对象。要避免这种情况, 可以对HTTPService 对象的resultFormat 属性进行以下设置:
+展开
-XML
<mx:HTTPService url="http://server/xmlDoc.xmlid="xmlService"
resultFormat="e4x"result="xmlObj=XML(xmlService.lastResult"/>

HTTPService 的lastResult 是用来设置xmlObj 的变量值。

如果该XML文件为静态或者它只需要被加载一次, 使用flash.net.URLLoader类来进行加载会比较方便快捷:
+展开
-ActionScript
private var loader:URLLoader = new URLLoader();
private function init():void {
loader.addEventListener(Event.COMPLETE, setResult);
var req:URLRequest = new URLRequest();
req.url = "http://server/xmlDoc.xml";
loader.load(req);
}
private function setResult(event:Event):void {
trace(XML(loader.data).toString());
}

Event.COMPLETE 事件监听器必须添加到URLLoader 里, 这样当文件加载完成时, 应用程序就会得到通知。所加载的数据将会存放到URLLoader.data 属性里, 而且不能被转换或修改。

如果该XML 数据需要被动态加载或多次加载, 使用HTTPService 来加载会比较容易。以下的完整代码展示这两种方法:
+展开
-XML
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400"
height="300creationComplete="init()">

<!-- if the resultFormat is not set, then the result will be
parsed as an Object 
-->

<!-- 如果resultFormat没有设置, 该结果会解析为一个对象-->
<mx:HTTPService url="http://server/xmlDoc.xmlid="xmlService"
resultFormat="e4xresult="xmlObj = XML(xmlService.lastResult)"/>

<mx:Script>
<![CDATA[
private var loader:URLLoader = new URLLoader();
[Bindable]
private var xmlObj:XML;
private function init():void {
loader.addEventListener(Event.COMPLETE, setResult);
}
private function urlLoaderSend():void {
var req:URLRequest = new URLRequest();
req.url = "http://server/xmlDoc.xml";
loader.load(req);
}
private function setResult(event:Event):void {
xmlObj = (loader.data as XML)
}

]]>
</mx:Script>
<mx:Button click="xmlService.send()"/>
<mx:Button click="urlLoaderSend()label="load via URLLoader"/>
<mx:TextArea text="{xmlObj.toString()}"/>
</mx:VBox>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表