sábado, 26 de setembro de 2015

Windev Mobile - 40/... - Xml - Ler Posicao Inicial e Final - Especialidade/Medicos/Refeito Funcao













Video - Windev Mobile - 40/... - Xml - Ler Posicao Inicial e Final - Especialidade/Medicos/Refeito Funcao


Nessa aula refiz pegar xml, com posicao inicial e final manualmente
http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/639-exemplo-leitura-xml-com-muitos-registros-670/read.awp


Exemplos peguei no Adriano Boller para me basear nessa aula



























//le WebService
LooperDeleteAll(LOOP_Especialidades) // elimina looper
gs_meu_xml= base.Lista_medicos() // peguei xml do webservice
EDT_xml_conteudo=gs_meu_xml // joguei xml no edt_xml_conteudo apenas para visualizar o que trouxe
funcao_xml_retira_tag_especialidades(gs_meu_xml) // funcao criada para trazer apenas especialidades


//Seleciona Especialidade
EDT_especialidades=LOOP_Especialidades.ATT_especialidade // estou pegando especialidade selecionada
LooperDeleteAll(LOOP_medicos)  // eliminando looper do plano 2
funcao_xml_retira_tag_medicos(gs_meu_xml)  // pegando funcao para retirar apenas medicoes dessa especialidade
MyWindow..Plane=2 // indo para plano 2


PROCEDURE funcao_xml_posicao_inicial(n_pega_posicao_inicial is int,s_pega_texto is string,s_tag_comparar is string)
// essa é para pegar posicao inicial
// recebo primeira posicao , texto e qual tag para comparar
//s_tag_comparar="<Nome>" // ficara como no lado esquerdo
n_tamanho_tag is int=Length(s_tag_comparar)-1  // aqui pego o tamanho da tag - diminuindo 1

n_x is int=0 // zerando contador
s_retira is string=""    // limpando o que vou retirar            
n_x=n_pega_posicao_inicial // inicio com posicao inicial
LOOP // entrei no loop
    n_x++ // estou somando
    s_retira=s_pega_texto[[n_x TO n_x+n_tamanho_tag]] // aqui estou retirando texto ate encontrar <nome> ou a tag especificada
    IF s_retira=s_tag_comparar THEN // caso encontrar o nome, é porque achei ela
        n_x+=Length(s_tag_comparar) // aqui coloco posicao somando o tamanho
        RESULT(n_x) // saindo da procedure e retornando valor
    END
    IF s_retira="" THEN // se for branco retira é porque nao tem mais nada
        RESULT(0) // fecho a procedure e retorno zero
    END
END



PROCEDURE funcao_xml_posicao_final(n_pega_posicao_inicial is int,s_pega_texto is string)
// funcao para pegar posicao final
n_x is int=0
n_x=n_pega_posicao_inicial // pego posicao inicial
LOOP
    n_x++
    IF s_pega_texto[[n_x]]="<" THEN // aqui descubro onde é a proxima posicao com < fechamento da tag
        RESULT(n_x) // retorna valor
    END
END


PROCEDURE funcao_xml_retira_tag_especialidades(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="<Especialidades>"
s_nome_tag_final is string="</Especialidades>"

arr_especialidades is array of string

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)
n_inicio is int=nPosicaoInicial  // para saber se o xml terminou

//nPosicaoFinal = PositionOccurrence(s_texto_completo,s_nome_tag_final,firstRank,FromBeginning)
nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
ArrayAdd(arr_especialidades,s_resultado)          
// essa especidade ja tinha passado o video, e nao mudou nada

LOOP
    IF nPosicaoFinal=0 OR nPosicaoInicial=0 THEN
        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)       
        s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
        IF nPosicaoInicial<n_inicio THEN // voltou ao inicio do xml e entao vamos terminar
            BREAK
        ELSE
            IF nPosicaoFinal=0 OR nPosicaoInicial=0 THEN
                BREAK
            ELSE
                FOR i=1 TO arr_especialidades..Occurrence // fiz isso para saber se ja tem alguma turma igual
                    IF arr_especialidades[i]=s_resultado THEN
                        s_resultado=""
                        BREAK
                    END
                END
                IF s_resultado<>"" THEN // caso nao tiver turma igual, mando adicionar array
                    ArrayAdd(arr_especialidades,s_resultado)          
                END      
            END
        END
    END
END
ArraySort(arr_especialidades,asAscending) // aqui estou classificando por ordem da turma
FOR i=1 TO arr_especialidades..Occurrence
    LooperAddLine(LOOP_Especialidades,arr_especialidades[i]) // adiciona linha // aqui estou adicionando linhas
END





PROCEDURE funcao_xml_retira_tag_medicos(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_nome is array of string
arr_crm is array of string
arr_especialidades is array of string
arr_planos is array of string
arr_endereco is array of string
arr_latitude is array of string
arr_longitude is array of string
arr_cidade is array of string
arr_telefone1 is array of string


s_resultado is string=""

s_nome_tag_inicial is string="<Especialidades>"
s_nome_tag_final is string="</Especialidades>"  
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  // para saber se o xml terminou
nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
n_confere is int=1
// ate aqui permanece como esta

LOOP
    IF nPosicaoInicial<n_inicio THEN
        BREAK
    ELSE
        IF nPosicaoFinal=0 OR nPosicaoInicial=0 THEN
            BREAK
        ELSE
            s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
            IF s_resultado=EDT_especialidades THEN // aqui verifico se é a mesma turma
                ArrayAdd(arr_especialidades,s_resultado)          
                s_nome_tag_inicial="<Nome>"
                s_nome_tag_final="</Nome>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                // aqui mudei, pego a posicao inicial a partir de minha funcao
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_nome,s_resultado)
                s_nome_tag_inicial="<CRM>"
                s_nome_tag_final="</CRM>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_crm,s_resultado)
                s_nome_tag_inicial="<Planos>"
                s_nome_tag_final="</Planos>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_planos,s_resultado)
                s_nome_tag_inicial="<Endereco>"
                s_nome_tag_final="</Endereco>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_endereco,s_resultado)
                s_nome_tag_inicial="<Latitude>"
                s_nome_tag_final="</Latitude>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_latitude,s_resultado)
                s_nome_tag_inicial="<Longitude>"
                s_nome_tag_final="</Longitude>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_longitude,s_resultado)
                s_nome_tag_inicial="<Cidade>"
                s_nome_tag_final="</Cidade>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_cidade,s_resultado)
                s_nome_tag_inicial="<Telefone1>"
                s_nome_tag_final="</Telefone1>"
                nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)
                nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
                s_resultado = Middle(s_texto_completo,nPosicaoInicial,nPosicaoFinal-nPosicaoInicial)
                ArrayAdd(arr_telefone1,s_resultado)
            END
        END
    END
    s_nome_tag_inicial="<Especialidades>"
    s_nome_tag_final="</Especialidades>"              
    nPosicaoInicial = funcao_xml_posicao_inicial(nPosicaoInicial,s_texto_completo,s_nome_tag_inicial)   
    nPosicaoFinal=funcao_xml_posicao_final(nPosicaoInicial,s_texto_completo)
END
// com essas alteracoes, funciona tanto no emulador como no aparelho
// os fontes estarao disponiveis


FOR i=1 TO arr_especialidades..Occurrence
    LooperAddLine(LOOP_medicos,arr_nome[i],arr_crm[i],arr_especialidades[i],arr_endereco[i],arr_planos[i],arr_cidade[i])

   
END






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



Nenhum comentário:

Postar um comentário

Teste

Teste
teste