FLASH對XML的另一種解釋方法(優化速度)

2021-08-29 17:22:37 字數 1917 閱讀 3620

[url]

簡介:原文better xml parsing

翻譯如下:

首先,所謂分析xml就是從乙個xml文件中釋放資料,並建立乙個內部的資料代表。我們通常的做法是載入乙個xml檔案,並建立乙個陣列物件來裝載裡面的資料以便為我們在flash中使用。

我們解釋xml文件並把資料裝載到陣列物件中的原因是多方面的。我們可以節省我們的記憶體空間,因為xml物件在flash是有一點巨大,而且當我們需要用到已載入的xml檔案的資料時,我們可以提高資料的訪問速度。另外,用playlist_array[1]來表示陣列總比在xml文件中找資料來得方便一點。

下面是我們的檔案,名為playlist.xml:

<?xml version="1.0"?>

playlist_arr = new array();

playlist_xml = new xml();

playlist_xml.ignorewhite = true;

playlist_xml.onload = function(success)

playlist_arr.push(trackdata);

} trace("total parse time: " + (gettimer()-starttime));

} else

// clean up after ourselves

delete playlist_xml;

}playlist_xml.load("playlist.xml");

上面的**解釋了我們的xml檔案並建立了乙個對組物件。如果在這之前你從來沒有處理過xml資料理解這段**是有點困難的。當解釋完成了以後,如果我們要訪問第乙個軌道的***檔案的位址我們會用「playlist_arr[0].location」,這裡就會得到他的正確的位址。而對我們來說,我們可以把這個做得更好……

上面那段**,在我的機子上,用了5毫秒去解除。這裡並不怎麼樣,但不要忘了我們只是解釋了兩個軌道而已。

下面是乙個更好的釋放相同資料的方法,而不用依靠迴圈地讀取子節點:

playlist_arr = new array();

playlist_xml = new xml();

playlist_xml.ignorewhite = true;

playlist_xml.onload = function(success)

trace("total parse time: " + (gettimer()-starttime));

} else

delete playlist_xml;

}function gettrackdata(track_xml)

return trackdata;

}playlist_xml.load("playlist.xml");

上面這個方法,我們可以得到相同的結果,但是卻快了一點,可讀性高了一點。在我的機子上只用了2毫秒來解釋這兩條軌道資訊並裝載到playlist陣列。

在這個例子中我給**加了注釋。我們最主要就是理解xml物件的onload事件。注意到我在第二種方法通過建立乙個gettrackdata函式使**更可讀了嗎?這裡面獲得乙個節點物件作為引數並返回乙個代表著軌道資訊的物件。

不用在節點中頻繁地讀取每乙個元素,我在這裡只用了兩個xml在flash中的屬性,firstchild和nextslibling。即首節點和下乙個節點或元素。在迴圈開始之前,我去掉了所有的東西,只把首點節點作為乙個xml值(在例子中為track_xml)。然後,我們的迴圈是簡單:當有節點的時後,我們釋放資訊。在迴圈的結尾,我們已得到了資料,並使xml值跳到下乙個節點。當下乙個節點的值回值為空時,表示沒有資訊去處理,我們退出迴圈。

現在你已看到了乙個截然不同的xml物件的解釋方法。不用依靠讀取子節點,我們利用nextsibling的優點來提高xml解釋的速度和可讀性。你們許多人也許已用過這種方法,但我想在這裡寫一下,因為這種方法並不是每個人都知道的。

另一種尊重

上中學的時候,有一節課印象非常深刻。老師問我們如果無意闖入乙個房間,發現房間裡有一位女士正在洗澡,這時應該怎麼辦?有同學回答就當什麼也沒看見,退出房間。還有同學回答 說聲對不起!女士。然後退出去。老師笑了笑說,還有更好的答案,那就是 對不起,先生!有一對結婚多年的夫妻,有一次出差在外的妻子有一件急事...

另一種勝利

另一種勝利 written by allen lee 剛才我的扣殺,出界了5.3厘公尺。雖然很可惜,但還是出界了,請確認下吧。幹 真是的,那些任性的傢伙!但是,到最後還只顧自己網球原則的正直笨蛋,和一定要用迴旋蛇標打中單人區的笨蛋,給我們看了場好比賽啊。龍崎 海棠和幹他們雖然輸了這場比賽,但他們堅持...

另一種table排序

click on the table header to sort in ascending order.last name first name birthday siblings smith john 7 12 1978 2johnson betty 10 15 1977 4henderson ...