por Jonas Galvez
Há uns dois dias atrás eu fiz um post no onRelease sobre uma técnica muito interessante para acessar documentos XML, que foi apresentada por Ted Patrick. A solução consiste no método (não documentado) __resolve. Criei um pequeno exemplo para ilustrar como ela funciona:
XMLNode.prototype.__resolve = function(p) {
var i = 0;
var nds, l = (nds=this.childNodes).length;
do {
if (nds[i].nodeName == p) {
return nds[i];
}
} while (++i};
var x = new XML("text<b />");
trace(x.root.a.firstChild.nodeValue);
A solução ainda não está finalizada, e existe uma thread ainda ativa sobre o assunto na lista Flashcoders. A versão mais recente está disponível aqui.
Após analisar um pouco, eu cheguei à conclusão de que não é verdadeiramente uma boa solução, já que a coleção childNodes de cada elemento teria que ser verificada completamente toda vez que o método __resolve fosse chamado. De qualquer forma, é muito interessante e pode funcionar OK em casos simples.
Aproveitando a onda, Michelangelo Capraro (novo membro da família onRelease) postou um parser que ele criou que funciona praticamente da mesma forma. Ele cria um objeto a partir de uma estrutura XML. Então, caso tenhamos o seguinte XML:
<root>x /><y /><z /></root>
Teríamos um objeto como este:
_xml = {root:{x:null, y:null, z:null}};
O download do arquivo pode ser feito aqui.
Os posts relacionados:
http://www.onrelease.org/index.php?m=200303#79769934
http://www.onrelease.org/index.php?m=200303#79769937
Jonas Galvez
|
|