quinta-feira, 24 de setembro de 2015

Windev Mobile - 39/... - Xml - Ler Posicao Inicial e Final - Turmas/Alunos













Video - Windev Mobile - 39/... - Xml - Ler Posicao Inicial e Final - Turmas/Alunos


Nessa aula vou mostrar como ler xml, e funcionar emulador e aparelho


http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/639-exemplo-leitura-xml-com-muitos-registros/read.awp










PROCEDURE funcao_xml_posicao_final(n_pega_posicao_inicial is int,s_pega_texto is string) // receber parametro posicao inicial e texto
n_x is int=0 // criei uma variavel de contador
n_x=n_pega_posicao_inicial // pegando a posicao inicial
LOOP // entrei no loop
    n_x++ // comecei a somar
    IF s_pega_texto[[n_x]]="<" THEN // estou perguntando se é < // o inicio da outra tag
        RESULT(n_x)  // se for, volta o resultado com posicao final
    END
END


PROCEDURE funcao_xml_retira_tag_alunos(s_texto_completo is string)
// Copiar essa funcao do Blog
// sera a parte dos alunos

// essa funcao do retira tag alunos
// criei uma array para cada tag
arr_aluno is array of string
arr_matricula is array of string
arr_data_nasc is array of string
arr_curso is array of string
arr_turma is array of string

s_resultado is string=""

s_nome_tag_inicial is string="<turma>"
s_nome_tag_final is string="</turma>"   
//minha tag inicial turma  e depois vou buscar em ordem as outras tag desse aluno
// por isso pediu para colocar em ordem       
nPosicaoInicial, nPosicaoFinal is int = 0
nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,firstRank,FromBeginning) + Length(s_nome_tag_inicial)
n_inicio is int=nPosicaoInicial // vou criar uma posicao inicio para saber primeira posicao pegada

//nPosicaoFinal = PositionOccurrence(s_texto_completo,s_nome_tag_final,firstRank,FromBeginning)
//essa posicao final, no emuluador funciona e no aparelho nao entao vamos mudar
nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
LOOP
    IF nPosicaoFinal=0 OR nPosicaoInicial=0 THEN
        BREAK
    ELSE
        s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
        IF s_resultado=EDT_turma THEN // aqui verifico se é a mesma turma
            ArrayAdd(arr_turma,s_resultado)           
            //
            s_nome_tag_inicial="<matricula>"
            s_nome_tag_final="</matricula>"
            nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,nextRank,FromBeginning) + Length(s_nome_tag_inicial)
            nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
            s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
            ArrayAdd(arr_matricula,s_resultado)
            //
            s_nome_tag_inicial="<aluno>"
            s_nome_tag_final="</aluno>"
            nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,nextRank,FromBeginning) + Length(s_nome_tag_inicial)
            nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
            s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
            ArrayAdd(arr_aluno,s_resultado)
            //
            s_nome_tag_inicial="<data_nasc>"
            s_nome_tag_final="</data_nasc>"
            nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,nextRank,FromBeginning) + Length(s_nome_tag_inicial)
            nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
            s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
            ArrayAdd(arr_data_nasc,s_resultado)
            //
            //
            s_nome_tag_inicial="<curso>"
            s_nome_tag_final="</curso>"
            nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,nextRank,FromBeginning) + Length(s_nome_tag_inicial)
            nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
            s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
            ArrayAdd(arr_curso,s_resultado)
            //
        END
        s_nome_tag_inicial="<turma>"
        s_nome_tag_final="</turma>"       
       
        nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,nextRank,FromBeginning) + Length(s_nome_tag_inicial)
        nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
        IF nPosicaoInicial<n_inicio THEN // se der esse resultado é porque voltou ao comeco
            BREAK
        ELSE
            IF nPosicaoFinal=0 OR nPosicaoInicial=0 THEN
                BREAK
            END
        END
        //coloquei aqui
    END       
END
// eliminei o sort nessa parte

FOR i=1 TO arr_turma..Occurrence
    LooperAddLine(LOOP_alunos,arr_aluno[i],arr_matricula[i],arr_data_nasc[i],arr_curso[i],arr_turma[i]) //aqui gravando looper
    END



PROCEDURE funcao_xml_retira_tag_turma(s_texto_completo is string)
// copiar essa funcao, vai estar no blog
// é a parte que le as turmas

// essa funcao vou disponibilizar blog

s_nome_tag_inicial is string="<turma>"
s_nome_tag_final is string="</turma>"

arr_turma is array of string

n_inicio is int=0 // Novo para saber se terminar o xml // 24 09 2015

s_resultado is string=""
nPosicaoInicial, nPosicaoFinal is int = 0
nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,firstRank,FromBeginning) + Length(s_nome_tag_inicial)
nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo) // novo // 24 09 2015
//achar posicao final
n_inicio=nPosicaoInicial
s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
ArrayAdd(arr_turma,s_resultado)
//Info("inicio"+cr+...
//        "Length(s_nome_tag_inicial)"+Length(s_nome_tag_inicial)+CR+...
//        "Length(s_nome_tag_final)"+Length(s_nome_tag_final)+CR+...
//        "s_nome_tag_inicial : "+s_nome_tag_inicial+CR+ ...
//        "s_nome_tag_final : "+s_nome_tag_final+CR+ ...
//        "parte 2-> nPosicaoInicial:"+nPosicaoInicial+CR+ ...
//        "nPosicaoFinal:"+nPosicaoFinal+CR+...
//        "s_resultado"+s_resultado)

LOOP
    IF nPosicaoFinal=0 AND nPosicaoInicial=0 THEN
        Info("PAROU POIS DEU POSICAO 0 - IF 1")
        BREAK
    ELSE
        nPosicaoInicial = PositionOccurrence(s_texto_completo,s_nome_tag_inicial,nextRank,FromBeginning) + Length(s_nome_tag_inicial)
        nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
        //nPosicaoFinal = PositionOccurrence(s_texto_completo,s_nome_tag_final,nextRank,FromBeginning)
        IF nPosicaoInicial<n_inicio THEN // novo // 24092015
            BREAK
        ELSE
            IF nPosicaoFinal=0 AND nPosicaoInicial=0 THEN
                BREAK
            ELSE
                //Acrescentar Aqui depois de nposicaofinal
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                FOR i=1 TO arr_turma..Occurrence // fiz isso para saber se ja tem alguma turma igual
                    IF arr_turma[i]=s_resultado THEN
                        s_resultado=""
                        BREAK
                    END
                END
                IF s_resultado<>"" THEN // caso nao tiver turma igual, mando adicionar array
                    ArrayAdd(arr_turma,s_resultado)           
                END       
                //Acrescentar Aqui depois de nposicaofinal
            END           
        END
    END
END
ArraySort(arr_turma,asAscending) // aqui estou classificando por ordem da turma
FOR i=1 TO arr_turma..Occurrence
        LooperAddLine(LOOP_turma,arr_turma[i]) // adiciona linha // aqui estou adicionando linhas
END


LooperDeleteAll(LOOP_turma) // elimina informacoes looper turma
sXml_retorno is string=""
gs_meu_xml = rrrrr.lista_alunos()
EDT_xml_conteudo=gs_meu_xml
funcao_xml_retira_tag_turma(gs_meu_xml)



LooperDeleteAll(LOOP_turma) // elimina informacoes looper turma
sXml_retorno is string=""
//gs_meu_xml = rrrrr.lista_alunos()
gs_meu_xml="<xlm><Retorno><matricula><turma>TU</turma><matriculax>0</matriculax><aluno>RODRIGO</aluno><data_nasc>12/12/2003</data_nasc><curso>ENSINO FUNDAMENTAL</curso></matricula><matricula><turma>2A3.INT LAV.</turma><matriculax>3489</matriculax><aluno>IGOR CESAR DE MELO COSTA</aluno><data_nasc>25/02/1996</data_nasc><curso>ENS. MEDIO INTEGRADO</curso></matricula><Total>727</Total></Retorno></Xml>"
EDT_xml_conteudo=gs_meu_xml
funcao_xml_retira_tag_turma(gs_meu_xml)


Blog - WinDev Mobile - Instalaca - Android 1/...
Blog - WinDev Mobile - Instalacao - Java 2/...
Blog - windev Mobile - MyExplorer 3/...
Blog - Windev Mobile - Android - Configurar Ansi 5/...
Blog - Windev Mobile - Layout - 6/.... 
Blog - Windev Mobile - Target_Code - 8/...
Blog - Windev Mobile - Agenda Cadastrar - 9/...
Blog - Windev Mobile - Agenda Mostrar - 10/...
Blog - Windev Mobile - Agenda Alterar - 11/...
Blog - Windev Mobile - Agenda Excluir - 12/...
Blog - Windev Mobile - HyperFile Error - 13/...
Blog - Windev Mobile -Tirar Foto - 14/... 
Blog - Windev Mobile - Pegar Foto Album - 15/...
Blog - Windev Mobile - hyperfil server - Acessar Rede/Could - Parte - 16/...
Blog - Windev Mobile - Query - Criar Consulta - Looper - Parte 17/...
Blog - Windev Mobile - Query - Tabela - Parte 18/...
Blog - Windev Mobile - Query - Filtro Acrescentar - Parte 19/...
Blog - Windev Mobile - Email - Parte 20/...
Blog - Windev Mobile - Analise Bolo Receita a/.. - Parte 21/...
Blog - Windev Mobile - Analise Bolo Receita b/... - Parte 22/...
Blog - Windev Mobile - Receita Bolo c/.. - Menu/Layout - Parte 23/...
Blog - Windev Mobile - Receita Bolo d/.. - Categoria - Parte 24/...
Blog - Widnev Mobile - Receita bolo e/.. - Categoria Altera/Exclui - Parte 25/...
Blog - Windev Mobile - 26/... - Receita Bolo - Combox Categoria
Blog - Windev Mobile - 27/.. - Receita Bolo - Tabela Bolo
Blog - Windev Mobile - 28/... - Xml - Retirar Conteudo Blog - Funcao
Blog - Windev Mobile - 29/... - Pdf - Ler Pdf Direto do Aparelho Android 
Blog - Windev Mobile - 30/... - Pdf - Ler Pdf Direto do Aparelho Android - Final 
Blog - Windev Mobile - 31/... - Looper - Criar Manual e Selecionar Informação
Blog - Windev Mobile - 33/.. Xml - Ler turmas e Mostrar Looper  
Blog - Windev Mobile - 35/... - Looper Mostrar Todos Dados Alunos 
Blog - Windev Mobile - 36/... - Looper Turma Mostra direto Alunos 
Blog - Windev Mobile - 37/... - Looper - Pegando Pelo WebService 
Blog - Windev Mobile - 38/... - Windows  - Mudar o Nome doTitulo
Blog - Windev Mobile - 39/... - Xml - Ler Posicao Inicial/Final - turmar Alunos 
Blog - Windev Mobile - 40/... - Xml - Ler Posicao Inicial/final/Especialidade/Refeito Funcao 
Blog - WinDev Mobile - 41/... HyperFile Classic Mobile 
Blog - WinDev Mobile - 42/... Matos Pedido - WinDevMobile 21 - Layout
Blog - WinDev Mobile - 43/... Matos Pedido 1/... - Tela Login
Blog - WinDev Mobile - 44/... Matos Pedido 2/... - Android Não Funciona
Blog - WinDev Mobile - 45/... Matos Pedido 3/... - Criando Conexão Classic
Blog - WinDev Mobile - 46/... Matos Pedido 4/... - Criando Grupo de Usuários
Blog - WinDev Mobile - 47/... Matos Pedido 5/... - Analise Grupo de Usuarios e Usuarios

Teste

Teste
teste