Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

1. Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 20/03/2012 - 20:58h

Amigos estou com um dilema, quero buscar informações que estão dentro de um arquivo e com estes dados preencher um xml e enviar, por exemplo o meu arquivo tem o campo cpf e telefone, abaixo destes campos tenhos, varios cpf e telefones, gostaria para cada telefone cpf enviar um xml, enviar o xml eu já sei, mais não sei como automatizar isso de forma que minha shell pegue estes dados no arquivo e monte e envie a xml sozinha, será que isso é possivel?

ta aqui o exemplo da shell que envia o xml, eu precisava que ela fosse preenchida com os dados do arquivo

#! /bin/sh
#EndPoint do WebService a ser invocado
ENDPOINT="xxxx"


curl --silent \
--data \
@- \
--header 'Content-Type: application/soap+xml; charset=utf-8' \
--user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.xxx">
<soap:Header/>
<soap:Body>
<v1:cpf>
22739980946
<v1:telefone>99669966</v1:telefone>
</v1:cpf>
</soap:Body>
</soap:Envelope>
EOF


  


2. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 20/03/2012 - 21:14h

Cadê o arquivo de entrada?


3. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 21/03/2012 - 11:43h

Desculpe amigo, imagine que tem um arquivo chamado arquivo.txt e dentro deste arquivo tem isso

CPF CELULAR
-------------------- -----------


01128648749 01174922047



02733297940 02799047042



01332840811 01388458409



01145343578 01168425878



02133944108 02197343445

Quero pegar estas informações e montar dentro do xml que coloquei neste post, para cada telefone ou cpf montar um xml


4. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/03/2012 - 19:29h


#!/bin/sh

while read cpf telefone; do
echo "<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://www.xxx">
<soap:Header/>
<soap:Body>
<v1:cpf>
$cpf
<v1:telefone>$telefone</v1:telefone>
</v1:cpf>
</soap:Body>
</soap:Envelope>
" > $cpf.xml
done < arquivo.txt



5. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 22/03/2012 - 20:34h

amigo eu preciso de algo que traga os valores que estão abaixo do cpf e telefone, eu só quero os numeros e que para cada um que estiver no arquivo gere um xml diferente, pense que este txt é um tabela onde no campo cpf e telefone tem varios itens dentro dele, eu quero que criar um xml para um destes itens

Mais muito obrigado, pelo que me passou,

Fico no aguardo


6. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 23/03/2012 - 15:45h

Segue o script


awk '$0 !~ /(^[a-zA-Z-]|^$)/ {
linha="<?xml version=\"1.0\" encoding=\"utf-8\"?>"
linha=sprintf("%s\n%s",linha,"<soap:Envelope xmlns:soap=\"http://www.xxx\">")
linha=sprintf("%s\n%s",linha,"<soap:Header/>")
linha=sprintf("%s\n%s",linha,"<soap:Body>")
linha=sprintf("%s\n%s",linha,"<v1:cpf>")
linha=sprintf("%s\n%s",linha,$1)
linha=sprintf("%s\n%s%s%s",linha,"<v1:telefone>",$2,"</v1:telefone>")
linha=sprintf("%s\n%s",linha,"</v1:cpf>")
linha=sprintf("%s\n%s",linha,"</soap:Body>")
linha=sprintf("%s\n%s",linha,"</soap:Envelope>")
print linha > $1".xml"
}' arquivo.txt




7. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 23/03/2012 - 23:37h

Amigos que legal de todos funcionou, vlw mesmo agora só mais uma duvida rsrs, nao tem como gerar um arquivo só com os registros ao invez de um para cada cpf? e tambem me dizem como executar varias shell sem saber o nome tentei ./*.* mais isso só executou a primeira shell que estava na pasta e não as demais

Mais um vez obrigado aos dois que me ajudaram, funcionou mesmo.


8. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

DAVISON MARCEL PASQUALINI
fdmarp

(usa Debian)

Enviado em 24/03/2012 - 07:12h

primeira parte ... mude a linha

print linha > $1".xml"

para

print linha >> NOME_DO_ARQUIVO_DE_SAIDA_DESEJADO.xml


segunda parte vc poderia usar um loop ... não sei se há uma opção do bash para isso.

Sugestões:

for i in *; do ./$i;done

find . -type f -exec {} \;



9. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 04/04/2012 - 12:21h

Amigo tem como fazer com que o arquivo gerado seja exatamente isso abaixo, só que colocando os dados de cpf e telefone conforme encontrado no arquivo?

ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi


curl --silent \
--data \
@- \
--header 'Content-Type: application/soap+xml; charset=utf-8' \
--user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header/>
<soap:Body>
<v1:envia>
<v1:cpf>22739980946</v1:cpf>
<v1:telefone>99669966</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;


10. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 04/04/2012 - 22:13h

juniorxt escreveu:

Amigo tem como fazer com que o arquivo gerado seja exatamente isso abaixo, só que colocando os dados de cpf e telefone conforme encontrado no arquivo?

ENDPOINT="http://www.site.com/site.asmx?"
if [ "$1" = "xxx.xxx.xxx" ]; then
echo "IP"
exit 0
fi


curl --silent \
--data \
@- \
--header 'Content-Type: application/soap+xml; charset=utf-8' \
--user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header/>
<soap:Body>
<v1:envia>
<v1:cpf>22739980946</v1:cpf>
<v1:telefone>99669966</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;


Se entendi correto vc deve fazer uma função estilo matriz de preenchimento, exemplo:


function matriz_xml()
{

#Recebe 3 ou 4 parâmetros com o conteúdo a ser preenchido.
# $1,$2,$3 ou $4

matriz_xml01='ENDPOINT="http://www.site.com/site.asmx?"'
matriz_xml02='if [ "$1" = "xxx.xxx.xxx" ]; then '
matriz_xml03=' echo "IP" '
matriz_xml04=' exit 0 '
matriz_xml05='fi '
matriz_xml06=' '
matriz_xml07=' '

E assim vai para todas as linhas abaixo.
curl --silent \
--data \
@- \
--header 'Content-Type: application/soap+xml; charset=utf-8' \
--user-agent "" \
${ENDPOINT} <<EOF | xmllint --format -
<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">
<soap:Header/>
<soap:Body>
<v1:envia>
<v1:cpf>22739980946</v1:cpf>
<v1:telefone>99669966</v1:telefone>
<v1:fecha>teste</v1:fecha>
<v1:fecha2>teste</v1:fecha2>
</v1:envia>
</soap:Body>
</soap:Envelope>
EOF
EXIT 99;


}



Nos locais onde irão receber dados, incluir os parâmetros.
No final vai gerar um array de campos exportando com quebra de linha para o arquivo que desejar ou todos em um único arquivo.
Se não entendi corretamente o que deseja avise ;)
Vamos batendo lata até acertar.



11. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

MN
juniorxt

(usa Outra)

Enviado em 05/04/2012 - 13:41h

obrigado amigo, tentei isso, mais nao tive sucesso

function matriz_xml()
{


matriz_xml01='ENDPOINT="http://www.site.com/site.asmx?"'
matriz_xml02='if [ "$1" = "xxx.xxx.xxx" ]; then '
matriz_xml03=' echo "IP" '
matriz_xml04=' exit 0 '
matriz_xml05='fi '
matriz_xml06=' '
matriz_xml07=' '
matriz_xml08='curl --silent \'
matriz_xml09='--data \'
matriz_xml10='@- \'
matriz_xml11='--header 'Content-Type: application/soap+xml; charset=utf-8' \'
matriz_xml12='--user-agent "" \'
matriz_xml13='${ENDPOINT} <<EOF | xmllint --format -'
matriz_xml14='<soap:Envelope xmlns:soap="http://www.xxx/xxxx/">'
matriz_xml15='<soap:Header/>'
matriz_xml16='<v1:envia>'
matriz_xml17='<v1:cpf>$1</v1:cpf>'
matriz_xml18='<v1:telefone>$1</v1:telefone>'
matriz_xml19='<v1:fecha>teste</v1:fecha>'
matriz_xml20='<v1:fecha2>teste</v1:fecha2>'
matriz_xml21='</v1:envia>'
matriz_xml22='</soap:Body>'
matriz_xml23='</soap:Envelope>'
matriz_xml16='EOF'
} arquivo.txt
echo "executado2"
exit 99

Não sei mais que fazer



12. Re: Buscar valores de um arquivo e enviar via xml [RESOLVIDO]

Geraldo Albuquerque
AprendiNoLinux

(usa Ubuntu)

Enviado em 06/04/2012 - 07:13h

A matriz precisa ser alterada e no local onde entrarão as variáveis vc deve substituir pelos parâmetros posicionais para gerar o arquivo final de saída na ordem em que estão sendo apresentadas.

Na pratica voce vai fazer um while com as linhas dos dados e vai passando para a função.
A função vai substituir apenas os valores que deseja e gerando o retorno que deverá ser jogado em outro arquivo.
No final da interação se tudo correr bem você deverá ter um arquivo com a mesma sequência e com a vantagem de ter jogado todos de uma vez ou pode optar por gerar cada matriz para um arquivo diferente com os nomes que desejar.

Vá passando os avanços e dentro do possível tento ajudar. ;)

Feliz Páscoa linuxers

Veja também: http://vivaolinux.com.br/topico/Off-Code-Cafe/Pascoa-momento-de-confabular-e-aproveitar-o-feriado-bo...





01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts