我一直在解析Flash中的各種XML(特別是FeedBurner RSS文件和YouTube數據API響應)時遇到了一些麻煩。我正在使用URLLoader
加載XML文件,並使用Event.COMPLETE
創建新的XML對象。的75%的時間這項工作很好,而現在每一次我得到這種類型的異常:AS3 XML解析的最佳實踐
TypeError: Error #1085: The element type "link" must be terminated by the matching end-tag "</link>".
我們思考的問題是,XML是大,也許之前的XML是Event.COMPLETE
事件被觸發實際上是從URLLoader
下載的。我們提出的唯一解決方案是在事件發生時啓動計時器,並在開始解析數據之前基本「等待幾秒鐘」。當然,這不是做這件事的最好方法。
在Flash中解析XML有沒有什麼可靠的方法?
更新2008年9月2日我們總結以下,excption在代碼在這一點上觸發:
data = new XML(mainXMLLoader.data);
// calculate the total number of entries.
for each (var i in data.channel.item){
_totalEntries++;
}
我已經放在一個try/catch語句解決這個部分,我目前顯示屏幕上出現錯誤信息。我的問題是如果一個不完整的文件如果bytesLoaded == bytesTotal
?
我已經用狀態報告更新了原始問題;我想另一個問題可能是有沒有一種方法來確定是否在訪問數據之前對對象進行了正確解析(如果錯誤是我的循環計數對象的數量在XML被實際解析到對象之前開始)?
@Theo:Thanks for the ignoreWhitespace tip。此外,我們已經確定,該事件之前的準備叫(我們做了一些測試,跟蹤mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded
邊注:的bytesLoaded是一樣的BYTESTOTAL它開始加載,以及(他們均爲0)之前,所以我會檢查的條件的onComplete其中: 的URLLoader。 bytesLoaded == URLLoader.bytesTotal && bytesTotal> 0 – 2008-09-25 10:47:37