In AS3 per gestire i documenti xml mal formati non è possibile usare la classe XML, che si rifà alle direttive E4X per la corretta scrittura e interpretazione dei documenti xml.
E' comunque possibile utilizzare documenti mal formati utilizzando la classe XMLDocument, che altro non è che la trasposizione in AS3 della vecchia classe XML, che accettava anche i documenti mal formati.
La classe contiene le stesse proprietà di quella vecchia in AS2, perciò in generale, se sai fare il parsing in AS2, lo fai tranquillamente anche in AS3 con lo stesso criterio, ma in questo caso non sfrutti le possibilità dell'E4X e il codice si complica un tantino, così come faceva in AS2.
Il tuo esempio con un xml mal formato diventa:
Codice PHP:
var l:URLLoader = new URLLoader(new URLRequest("test.xml"));
l.addEventListener(Event.COMPLETE, complete);
l.addEventListener(IOErrorEvent.IO_ERROR, io_error);
function complete (e:Event) {
try {
var xml:XMLDocument = new XMLDocument();
xml.ignoreWhite = true;
xml.parseXML(e.target.data);
var figli:Array = xml.childNodes;
for(var i:uint = 0; i < figli.length; i++){
trace(figli[i].attributes.id);
trace(figli[i].attributes.titolo);
trace(figli[i].attributes.anno);
trace(figli[i].attributes.tecnica);
trace(figli[i].attributes.cliente);
trace(figli[i].attributes.agenzia);
trace(figli[i].attributes.thumb);
trace(figli[i].attributes.thumb_low);
trace(figli[i].attributes.pict);
trace(figli[i].attributes.pict_high);
trace(figli[i].attributes.thumb_anim);
trace(figli[i].attributes.anim);
trace('________________________');
}
} catch (e:Error) {
}
}
function io_error (e:IOErrorEvent) {
trace("XML non caricato!");
}