Best Practices für AS3, XML-Parsing

Habe ich einige Probleme, analysieren die verschiedenen Arten von XML innerhalb von flash (speziell FeedBurner RSS-Dateien und YouTube Daten API-Antworten). Ich bin mit einem URLLoader zum laden einer XML-Datei, und auf Event.COMPLETE erstellen ein neues XML-Objekt. 75% der Zeit, die diese Arbeit gut, und hin und wieder bekomme ich diese Art von Ausnahme:

TypeError: Error #1085: The element type "link" must be terminated by the matching end-tag "</link>".

Wir denken, das problem ist, dass Die XML ist groß, und vielleicht das Event.COMPLETE Ereignis wird ausgelöst, bevor die XML-Datei tatsächlich heruntergeladen von der URLLoader. Die einzige Lösung, die wir haben, kommen, ist mit ausschalten ein timer auf das Ereignis, und im wesentlichen "warten Sie ein paar Sekunden", bevor die Daten analysieren. Natürlich kann dies nicht der beste Weg, dies zu tun.

Gibt es eine todsichere Methode zum Parsen von XML innerhalb von Flash?

Update Sept 2 2008 Wir abgeschlossen haben, die folgenden, die excption ausgelöst wird, der code an dieser Stelle:

data = new XML(mainXMLLoader.data);

// calculate the total number of entries.
for each (var i in data.channel.item){
    _totalEntries++;
}

Habe ich gelegt, ein try/catch-Anweisung, um dieses Teil, und bin derzeit auf der Anzeige eine Fehlermeldung auf dem Bildschirm, wenn Sie Auftritt. Meine Frage ist, wie würde eine unvollständige Datei an diesen Punkt gelangen, wenn die bytesLoaded == bytesTotal?


Ich habe aktualisiert die ursprüngliche Frage mit einem status Bericht; ich denke, eine andere Frage wäre gibt es eine Möglichkeit, um zu bestimmen, ob oder nicht eine XML Objekt wird ordnungsgemäß analysiert, bevor auf die Daten zugreifen (falls der Fehler ist, dass meine Schleife zählt die Anzahl der Objekte ab, bevor die XML-Daten tatsächlich analysiert in dem Objekt)?


@Theo: Danke für die ignoreWhitespace-Tipp. Auch wir haben festgestellt, dass der event wird aufgerufen, bevor Ihr bereit (Wir hatten einige tests, tracing mainXMLLoader.bytesLoaded + "/" + mainXMLLoader.bytesLoaded

InformationsquelleAutor Jeff Winkworth | 2008-08-20

Schreibe einen Kommentar