Ir para conteúdo
Fórum Script Brasil
  • 0

Flash busca dados de XML (dúvida de funcionamento)


Cardon

Pergunta

Boa tarde pessoal

Venho aqui novamente para tirar uma dúvida que esta me matando.

apesar de ter outros post sobre xml no flash não encontrei nenhum que coloca o que realmente quero fazer.

bom ai vai.

Tenho um tipo de banco de dados de informações que fiz em xml algo do tipo:

<?xml version='1data0' encoding='iso-8859-1'?>
<xml>
    <datas>
        <datass mes="01" dia="01" dataa="Confraternização Universal"/>     
        <datass mes="02" dia="01" dataa="Dia Mundial da Paz" estado="Alguma relevância"/>
        <datass mes="03" dia="02" dataa="Dia da Abreugrafia"/>
        <datass mes="04" dia="05" dataa="Criação da 1ª Tipografia no Brasil"/>
        <datass mes="05" dia="06" dataa="Dia de Reis" estado="Alguma relevância"/>
        <datass mes="06" dia="06" dataa="Dia da Gratidão"/>
        <datass mes="07" dia="07" dataa="Dia da Liberdade de Cultos"/>
        <datass mes="08" dia="08" dataa="Dia do Fotógrafo"/>
        <datass mes="09" dia="09" dataa="Dia do Fico (1822)"/>
        <datass mes="10" dia="09" dataa="Dia do Astronauta"/>
        <datass mes="11" dia="14" dataa="Dia do Enfermo"/>
        <datass mes="12" dia="15" dataa="Dia Mundial do Compositor"/>
        <datass mes="13" dia="15" dataa="Dia dos Adultos"/>
        <datass mes="14" dia="20" dataa="Dia do Museu de Arte Moderna do RJ"/>
        <datass mes="15" dia="20" dataa="Dia do Farmacêutico"/>
        <datass mes="16" dia="21" dataa="Dia Mundial da Religião"/>
        <datass mes="17" dia="24" dataa="Dia da Previdência Social"/>
        <datass mes="18" dia="24" dataa="Dia da Constituição"/>
        <datass mes="19" dia="24" dataa="Instituição do Casamento civil no Brasil "/>
        <datass mes="20" dia="24" dataa="Dia Nacional dos Aposentados" estado="Alguma relevância"/>
        <datass mes="21" dia="25" dataa="Dia do Carteiro"/>
        <datass mes="22" dia="25" dataa="Fundação de São Paulo"/>
        <datass mes="23" dia="25" dataa="Criação dos Correios e Telégrafos no Brasil "/>
        <datass mes="24" dia="27" dataa="Dia da Elevação do Brasil Vice-Reinado (1763)"/>
        <datass mes="25" dia="28" dataa="Dia da Abertura dos Portos (1808)"/>
        <datass mes="26" dia="30" dataa="Dia da Saudade"/>
        <datass mes="27" dia="30" dataa="Dia do Portuário"/>
        <datass mes="28" dia="30" dataa="Dia Nacional das Histórias em Quadrinhos" estado="Alguma relevância"/>
        <datass mes="29" dia="30" dataa="Dia da Não-Violência"/>
        <datass mes="30" dia="31" dataa="Dia do lançamento do 1º Satélite data EUA (1958) "/>
        <datass mes="31" dia="31" dataa="Dia Mundial do Mágico"/>
    </datas>
</xml>
e puxo essas informações para o flash dessa maneira
con = new XML();
con.ignoreWhite = true;
con.onLoad = function() {

    v1 = new String();//data comemorativa
    v2 = new String();//importancia
    camp1 = new String();//valor do dia
    camp2 = new String();//valor do mes
    i = new Number();

    _level0.acept.onRelease = function() {
        camp1 = _level0.dia.text;
        camp2 = _level0.mes.text;

        i = 0;
        while (con.childNodes[0].childNodes[0].childNodes[i].attributes.dataa != undefined) {
            if (Number(camp1) == con.childNodes[0].childNodes[0].childNodes[i].attributes.mes) {

                v1 = con.childNodes[0].childNodes[0].childNodes[i].attributes.dataa;
                v2 = con.childNodes[0].childNodes[0].childNodes[i].attributes.estado;

            }
            i++;
        }

    };

};
con.load("calender.xml");

ali podem ver que coloquei um botão para validar um campo onde é digitado o numero do mes para aparecer a respectiva data e estado.

o dia irei usar depois então não esta afetando em nada por enquanto.

tudo funciona perfeito quando digito no campo que mencionei os números 1, 2, 3, 4, 5. dai para frente não aparece nada

nem se quer puxou do xml pois vi apertando ctrl+shift+enter para ver pelo debugger.

se alguém poder me ajudar agradeço muito

//esse mesmo metodo funcionou em um banner que fiz

//a diferença é que eu usava menos campos no xml

//funciona muito bem pois já utilizei esse mesmo processo em outro banner num site que fiz

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Olá cardon ^_^

realmente seu xml está bem confuso, deveriamos tentar clareá-lo.

mas gostaria de apontar um erro, "o dia irei usar depois então não esta afetando em nada por enquanto"

porém olhando em vosso código:

camp1 = _level0.dia.text;

...if (Number(camp1) == con.childNodes[0].childNodes[0].childNodes[i].attributes.mes) {...

Parece haver uma confusão, estás testando na verdade o campo dia no lugar do campo mês >_<

Não entendi muito bem a idéia de colocar o atributo mes com valores de 1~31 mas isso deve ser alguma peculiaridade de seu código.

Se puder explicar melhor seu problema, ou melhor, nos dizer para que e como esta sendo usado, poderei lhe auxiliar melhor;

enquanto isso vou analizar seu codigo, pra lhe proporcionar uma solução meio que às cegas

abraços

Pooh

Link para o comentário
Compartilhar em outros sites

  • 0

olá Cardon ^_^

Percebi vosso erro :)

adicione antes de tudo a linha:

System.useCodepage = true;

Agora porque tens de colocar isso ?

Aprendemos uma vez que nosso amigão(o Flash), trabalha com unicode, por default;

Quando declaramos "System.useCodePage = true" ele procura usar o encoding do sistema presente.

Resumindo, não é sempre uma boa idéia, porque ? nem todos podem possuir o mesmo módulo de sistema que o nosso, nosso encoding atual está para pt-br ou Latin1-generalci ou tambén iso-8859-1, resumindo uma site desse aberto em um computador aonde essa não é a linguagem padrão vai acarretar em erros;

Agora o porque do mal funcionamento;

Você declarou que o flash vai procurar os registros até que ele não encontre valor para o atributo "dataa" resumindo ele vai mapear todos os registros, e nesse mapeando você faz uma verificação, para saber se o registro que esta sendo lido nesse momento é o registro requerido ;

podes adicionar uma outra cerificação para oc aso de não encontrar nenhum registro, apra o flash informar o usuário que nada foi encontrado, porém não sei se isso lhe é util devido a falta de conhecimento do projeto;

Ou seja,o flash estando no default de System.useCodePage = false, lia o seu atributo "dataa" e encontrada caracteres desconhecidos, o que o fazia encarar como "undefined", no seu código assim que o flash encontrar um undefined ele sai do While e é por isso que mesmo tendo registros contendo caracteres unicode ele não continuava;

Bom é so isso :)

Quebrei um pouco a cabeça após excluir o registro do "dia da gratidão" e ele ter lido mais registros, foi então que percebi o seu uso do "~" e lembrei do problema unicode do flash ^^

bom qualquer dúvida volte sempre

Abraços

Pooh

Link para o comentário
Compartilhar em outros sites

  • 0

Pooh

muito obrigado mesmo

eu adicionei a linha no meu script e funcionou perfeitamente

po fico lindo hehehe

e nem liga pra locura que coloquei ali

to fazendo um modelo teste de um siteminha para ver as datas comemorativas com mais facilidade do que em uma planilha do excel

hehe tendo apenas que digitar a data e a sua comemoração respectiva aparece.

o fato de eu ter colocado no campo mes 1-31 era so para ver se o flash ia imprimir certo todos os dados dos campos de cada linha certinho

assim eu via mudando conforme mudava a linha, entende?

mas agora já ta tudo certo

ah e nem tem problema ficar "undefined" porque é para mim mesmo mas se der vontade mudo isso

ps - eu tinha falado que já tinha feito isso antes e dado certo, pois no código anterior tinha essa linha que você adicionou para mim, mas eu fiz o outro código com um

colega de trabalho hehe

e ele revisou o action para mim

talves ele acrescentou esse detalhe

falow brow muito obrigado

Editado por Cardon
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...