英文原文地址: 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专栏版块参加讨论
|