英文原文地址: http://www.darronschall.com/weblog/archives/000065.cfm
在網(wǎng)上許多XML的解釋數(shù)據(jù)都涉及到在FLASH不斷地從一個(gè)XML文檔中讀取節(jié)點(diǎn)樹(shù)來(lái)釋放數(shù)據(jù)。這種做法有兩個(gè)不足的地方:速度和可讀性。下面我將教大家一種不是新的,但是,更可用的方法。
首先,所謂分析XML就是從一個(gè)XML文檔中釋放數(shù)據(jù),并創(chuàng)建一個(gè)內(nèi)部的數(shù)據(jù)代表。我們通常的做法是加載一個(gè)XML文件,并創(chuàng)建一個(gè)數(shù)組對(duì)象來(lái)裝載里面的數(shù)據(jù)以便為我們?cè)贔LASH中使用。
我們解釋XML文檔并把數(shù)據(jù)裝載到數(shù)組對(duì)象中的原因是多方面的。我們可以節(jié)省我們的內(nèi)存空間,因?yàn)閄ML對(duì)象在FLASH是有一點(diǎn)巨大,而且當(dāng)我們需要用到已加載的XML文件的數(shù)據(jù)時(shí),我們可以提高數(shù)據(jù)的訪(fǎng)問(wèn)速度。另外,用playlist_array[1]來(lái)表示數(shù)組總比在XML文檔中找數(shù)據(jù)來(lái)得方便一點(diǎn)。
下面我們開(kāi)始吧,我們先看一個(gè)在XML文件,這個(gè)文件是做一個(gè)FLASH的MP3播放器時(shí)得用到的。下面是我們的文件,名為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文件中,我們聲名了一個(gè)帶有兩個(gè)軌道(track)的播放列表(playlist),每個(gè)軌道(track)里有一個(gè)歌手名(artist name),歌名(song name),還有mp3文件的地址(location),這些我們都可以動(dòng)態(tài)地載入。下面是我們經(jīng)常用到的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");
出處:閃客帝國(guó)
責(zé)任編輯:地獄天堂
上一頁(yè) 下一頁(yè) 讓Flash更好的利用Xml
◎進(jìn)入論壇Flash專(zhuān)欄版塊參加討論
|