Caetano, ops... @Luiz Eduardo... (Ou não né?) rs.... Então, a questão das strings... já me derrubou com isso... não dá pra ficar fazendo cast toda hora... vai poluir o código.
Eu tava querendo fazer isso direto já no "=", ou seja... no momento que um valor é requisitado ou setado... (minha_var = meuxml.node.conteudo)... ou (meuxml.node.conteudo = minha_var ) justamente pra dar um ar mais "elegante", sem precisar de funções extras expostas para fazer isso.. Mas pelo jeito o mais correto aqui seria criar funções internas na classe para set/get dos valores... Só uma dúvida: No momento que seta um valor para um xml atraves do "=", o que é executado dentro da classe XML? Em 24 de julho de 2011 04:32, Luis Eduardo <[email protected]>escreveu: > > > Oi Wemerson, > > Cara... o problema me parece ser puramente algorítmico e não > tecnológico. (digo.. a tecnologia pra fazer isso vc já tem pronta, tratar > xml em flex puro). > Veja se um algoritmo assim pode te dar umas idéias pra resolver esse > pipino: > > supondo que o XML que chega do back-end tenha apenas filhos de um nível (ou > seja, <root><noum></noum><nodois></**nodois>...</root>): > > ------------------------------**------- > ...para cada nó fazer: > ......para cada atributo do nó fazer: > .........checa se o objeto que receberá o valor tem o nó/atributo (essa > parte poderia ser pulada no caso de vc querer setar um valor via dicionário > no objeto automaticamente > .........cria/seta o valor no objeto source com o valor do base64encode() > ------------------------------**------ > se o objeto destino for um Object, é só setar a variável na tóra (pq Object > é igual Dictionary pra setar variável "on the fly"). Mas vc corre o risco de > dar pau dependendo do que vier no XML e dependendo do que é o Object destino > e de como vc o usa. > > supondo que o XML do back-end possa ter hierarquia (filhos dos filhos), aí > vc vai precisar de uma função recursiva que recebe como parametro o Object e > um nó XML a ser digerido. > ------------------------------**--- > função digere(Object obj, XML xml) { > ...para cada nó do xml fazer: > ......para cada atributo do nó fazer: > .........checa se o objeto que recebera o valor tem o nó/atributo (essa > parte poderia ser pulada no caso de vc querer setar um valor via dicionario > no objeto automaticamente > .........cria/seta o valor no objeto source com o valor do base64encode() > ......digere(obj, xml.filhos) (ou seja, chama a propria funcao digere > passando a lista de filhos do nó atual. Assim vc vai andar pela árvore > digerindo ela.) > } > > e depois para chamar essa funcao faz > ...para cada nó desse mesmo nivel do XMLList (q provavelmente vai ser o > root a primeira vez) fazer: > ......digere(obj, xml); > ------------------------------**--- > > Em C++ existe a sobrecarga de operadores, não me lembro com certeza se > ActionScript tb tem isso (acho q sim), já faz um tempo que não programo em > flex. > De qualquer forma usando a sobrecarga de operadores iria só dar um ar mais > profissional mas no final das contas vc ia precisar fazer quase o mesmo > código de "digestão" na definição da sobrecarga. > > Uma última observação: trabalhar do jeito que vc quer, todas as variaveis > serão sempre Strings, correto? se chegar um valor no XML de -23.45 ele será > substituido pela string "-23.45" no objeto destino. Idem para booleanos e > afins. Isso pode te dar o trabalho de ter que ficar fazendo cast por todo o > codigo quando vc for usar a variavel, o que seria provavelmente um trabalho > até maior do que tratar na mão a conversão acima. A solução nesse caso > seria de trazer junto com o valor o tipo dele e assim vc poderia fazer um > casting automatico la na funcao digere()... Mas no final das contas vc vai > estar implementando na unha, tudo de novo, o que o AMF já faz com a > serialização e deserialização de objetos. > Como dizia Mopheus do matrix: "I will show you how deep the rabbit hole > goes". ;) > > Bom... só pra não terminar o email de forma tão pessimista... se teu XML > que chegar for simples e se vc já for usar as variáveis sempre como string > pelo resto do código... então só o primeiro bloquinho de código ja deve te > resolver o problema hehe > > (ou não) > > > abraços, > - Luís > > > > Em 20/07/2011 17:44, Wemerson Couto Guimarães escreveu: > > Opa... nenhum... só flex 3 direto. >> >> Todos os nomes de nodes e os labels devem permanecer inalterados... só >> quero alterar o conteúdo.. >> >> só que em vez de fazer algo do tipo: meuxml.node.valor = base64encode('meu >> valor'), ou meuxml.node.@label = base64encode('meu valor')... >> >> Fazer a atribuição de valores direta, e a classe xml extendida já fazer a >> conversão internamente... algo como: >> >> meuxml_extendido.node.valor = 'meu valor', ou meuxml_extendido.node.@label= >> 'meu valor'... >> >> no uso da aplicação seria transparente, pois os valores ao serem setados >> são codificados e quando precisarem ser mostrados, seriam decodificados... o >> detalhe mesmo seria só na hora de gravar esse xml no disco para que o mesmo >> ficasse armazenado nos meus arquivos xml com os valores codificados... >> >> >> >> > -- > Você recebeu esta mensagem porque está inscrito na lista "flexdev" > Para enviar uma mensagem, envie um e-mail para [email protected] > Para sair da lista, envie um email em branco para flexdev-unsubscribe@** > googlegroups.com <[email protected]> > Mais opções estão disponíveis em > http://groups.google.com/**group/flexdev<http://groups.google.com/group/flexdev> > -- *Wemerson Guimarães* Rio Verde - Go -- Você recebeu esta mensagem porque está inscrito na lista "flexdev" Para enviar uma mensagem, envie um e-mail para [email protected] Para sair da lista, envie um email em branco para [email protected] Mais opções estão disponíveis em http://groups.google.com/group/flexdev
