我一直在解析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