【发布时间】:2010-09-06 06:49:14
【问题描述】:
我在解析 Flash 中的各种类型的 XML(特别是 FeedBurner RSS 文件和 YouTube 数据 API 响应)时遇到了一些问题。我正在使用URLLoader 加载一个XML 文件,并在Event.COMPLETE 创建一个新的XML 对象。 75% 的时间都可以正常工作,而且我时不时会遇到这种类型的异常:
TypeError: Error #1085: The element type "link" must be terminated by the matching end-tag "</link>".
我们认为问题在于 XML 很大,并且可能在实际从 URLLoader 下载 XML 之前触发了 Event.COMPLETE 事件。我们想出的唯一解决方案是在事件上设置一个计时器,并在开始解析数据之前基本上“等待几秒钟”。这肯定不是最好的方法。
有什么可靠的方法可以在 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 对象是否被正确解析(以防错误是我的循环计数对象数量在 XML 实际解析之前开始对象)?
@Theo:感谢 ignoreWhitespace 提示。此外,我们已经确定事件在它准备好之前被调用(我们做了一些测试跟踪mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded
【问题讨论】:
标签: xml flash actionscript-3 rss fileparse