| 英文原文地址:http://www.darronschall.com/weblog/archives/000065.cfm
 在网上许多XML的解释数据都涉及到在FLASH不断地从一个XML文档中读取节点树来释放数据。这种做法有两个不足的地方:速度和可读性。下面我将教大家一种不是新的,但是,更可用的方法。
 首先,所谓分析XML就是从一个XML文档中释放数据,并创建一个内部的数据代表。我们通常的做法是加载一个XML文件,并创建一个数组对象来装载里面的数据以便为我们在FLASH中使用。
 
 我们解释XML文档并把数据装载到数组对象中的原因是多方面的。我们可以节省我们的内存空间,因为XML对象在FLASH是有一点巨大,而且当我们需要用到已加载的XML文件的数据时,我们可以提高数据的访问速度。另外,用playlist_array[1]来表示数组总比在XML文档中找数据来得方便一点。
 
 下面我们开始吧,我们先看一个在XML文件,这个文件是做一个FLASH的MP3播放器时得用到的。下面是我们的文件,名为playlist.xml:
 <xml version="1.0"?><playlist>
 <track>
 <artist><![CDATA[Some Band #1]]></artist>
 <name><![CDATA[Some band's song]]></name>
 <location><![CDATA[some_band_1.mp3]]></location>
 </track>
 
 <track>
 <artist><![CDATA[Some Band #2]]></artist>
 <name><![CDATA[Some band #2's song]]></name>
 <location><![CDATA[some_band_2.mp3]]></location>
 </track>
 </playlist>
 
 
 在上面的XML文件中,我们声名了一个带有两个轨道(track)的播放列表(playlist),每个轨道(track)里有一个歌手名(artist name),歌名(song name),还有mp3文件的地址(location),这些我们都可以动态地载入。下面是我们经常用到的XML的解析方法: playlist_arr = new Array();playlist_xml = new XML();
 playlist_xml.ignoreWhite = true;
 playlist_xml.onLoad = function(success) {
 if (success) {
 var startTime = getTimer();
 
 var tracks_xml = playlist_xml.firstChild;
 for (var i = 0; i < tracks_xml.childNodes.length; i++) {
 var trackData = new Object();
 for (var j = 0; j < tracks_xml.childNodes[i].childNodes.length; j++) {
 trackData[tracks_xml.childNodes[i].childNodes[j].nodeName] = tracks_xml.childNodes[i].childNodes[j].firstChild.nodeValue;
 }
 playlist_arr.push(trackData);
 }
 
 trace("Total parse time: " + (getTimer()-startTime));
 
 } else {
 trace("Error loading playlist.");
 }
 
 // clean up after ourselves
 delete playlist_xml;
 }
 playlist_xml.load("playlist.xml");
 
 出处:闪客帝国
责任编辑:地狱天堂
 上一页 下一页 让Flash更好的利用Xml ◎进入论坛Flash专栏版块参加讨论
	      |