Se não me engano, para esse ultimo exemplo que vc colocou: "(minha_var = meuxml.node.conteudo)... ou (meuxml.node.conteudo = minha_var )" o "=" deve trabalhar com Strings para ambos os lados. (sem ser em base64, strings puras do AS mesmo)

Agora o que rola exatamente dentro da classe XML do flex... aí eu já não posso te ajudar hehe Só uma outra idéia rápida: Quem sabe o que vc precisa não seja extender um HttpService e fazer nele a conversao do XML inteiro recebido? Aliás... um HttpService já usa umas conversões lá e deixa vc setar qual vc quer (acho que já passei por um treco desses uma vez navegando pelo codigo fonte do flex) Enfim... a ideia seria vc converter e desconverter o XML inteiro assim que recebesse/enviasse.

    boa sorte aí,
    - Luís


Em 24/07/2011 09:30, Wemerson Couto Guimarães escreveu:
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] <mailto:[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] <mailto:[email protected]>
    Para sair da lista, envie um email em branco para
    [email protected]
    <mailto:[email protected]>
    Mais opções estão disponíveis em
    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

--
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

Responder a