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