Clipper On Line • Ver Tópico - Criar um arquivo XML

Criar um arquivo XML

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Criar um arquivo XML

Mensagempor Paulao » 09 Jan 2018 15:33

Um cliente meu me pediu pra eu gerar um arquivo XML com dados do meu sistema para se comunicar com o sistema de uma rede de lojas, eu criei a rotina abaixo

*_______________________________________________________________________________   
Func gera_xml(oModelo)
Local oMod := oModelo
Local aData := substr(dtoc(date()),7,4)+"-"+substr(dtoc(date()),4,2)+"-"+substr(dtoc(date()),1,2)
local1:=chr(13)+chr(10)
local2:=0
Local3 := alltrim(oMod)+".XML"

dbselectarea('fitnomad')
ordsetfocus('refe_fit')
dbseek(oMod)
if eof()
    msgstop("Produto não encontrado","Atenção")
    return(nil)
else
    dbselectarea('granomad')
    ordsetfocus('desc_gra')
    dbseek(fitnomad->grad_fit)
    if eof()
        msgstop("Grade não encontrada","Atenção")
    endi
endi

nhandle:=fCreate(Local3,Local2)

fwrite(nhandle,;
'<?xml version="1.0"?>'+Local1)

fwrite(nhandle,;
'<catalogo>'+Local1)

fwrite(nhandle,;
'    <ident>'+Local1)

fwrite(nhandle,;
'       <versao>1.0</versao>'+Local1)

fwrite(nhandle,;
'       <data>'+aData+'</data>'+Local1)

fwrite(nhandle,;
'    </ident>'+Local1)

fwrite(nhandle,;
'    <gerador>'+Local1)

fwrite(nhandle,;
'        <razao>'+alltrim(connomad->nome_con)+'</razao>'+Local1)

fwrite(nhandle,;
'        <cnpj>'+alltrim(connomad->cnpj_con)+'</cnpj>'+Local1)

fwrite(nhandle,;
'    </gerador>'+Local1)

fwrite(nhandle,;
'    <produtos>'+Local1)

fwrite(nhandle,;
'        <produto>'+Local1)

fwrite(nhandle,;
'            <prod>'+alltrim(fitnomad->cpro_fit)+'</cod>'+Local1)

fwrite(nhandle,;
'            <pcategoria>'+alltrim(fitnomad->desc_fit)+'</pcategoria>'+Local1)

fwrite(nhandle,;
'            <punid>PR</pcategoria>'+Local1)

fwrite(nhandle,;
'            <grade>'+Local1)

for a = 1 to 20
    var_1="granomad->gr"+alltrim(str(a))+"_gra"
    if &var_1 <> spac(5)

        fwrite(nhandle,;
        '                <tm tid="'+alltrim(str(a))+'">'+alltrim(&var_1)+'</tm>'+Local1)

    endi
next

fwrite(nhandle,;
'            </grade>'+Local1)

fwrite(nhandle,;
'            <materiais>'+Local1)

fwrite(nhandle,;
'                <material>'+Local1)

fwrite(nhandle,;
'                <fmatcod>'+alltrim(fitnomad->codm_fit)+'</fmatcod>'+Local1)

fwrite(nhandle,;
'                <cores>'+Local1)

fwrite(nhandle,;
'                    <cor>'+Local1)

fwrite(nhandle,;
'                        <fcrcod>'+alltrim(fitnomad->codc_fit)+'</fcrcod>'+Local1)

fwrite(nhandle,;
'                        <eans>'+Local1)

for a = 1 to 20

    var_2 = 'fitnomad->cba'+alltrim(str(a))+'_fit'

    if &var_2 <> spac(13)

fwrite(nhandle,;
'                        <ean tid="'+alltrim(str(a))+'">'+alltrim(&var_2)+'</ean>'+Local1)
    endi

next
fwrite(nhandle,;
'                        </eans>'+Local1)

fwrite(nhandle,;
'                    </cor>'+Local1)

fwrite(nhandle,;
'                </cores>'+Local1)

fwrite(nhandle,;
'                </material>'+Local1)

fwrite(nhandle,;
'            </materiais>'+Local1)

fwrite(nhandle,;
'        </produto>'+Local1)

fwrite(nhandle,;
'    </produtos>'+Local1)

fwrite(nhandle,;
'</catalogo>'+Local1)

fclose(nhandle)

return(nil)


Que gera o arquivo abaixo

<?xml version="1.0"?>
<catalogo>
    <ident>
       <versao>1.0</versao>
       <data>2018-01-09</data>
    </ident>
    <gerador>
        <razao>DAVID DA SILVA ADAO CALÇADOS ME</razao>
        <cnpj>08595135000159</cnpj>
    </gerador>
    <produtos>
        <produto>
            <prod>1000 CAT</cod>
            <pcategoria>BOTAS DE MATERIAL RECICLADO</pcategoria>
            <punid>PR</pcategoria>
            <grade>
                <tm tid="1">33</tm>
                <tm tid="2">34</tm>
                <tm tid="3">35</tm>
                <tm tid="4">36</tm>
                <tm tid="5">37</tm>
                <tm tid="6">38</tm>
                <tm tid="7">39</tm>
                <tm tid="8">40</tm>
                <tm tid="9">41</tm>
                <tm tid="10">42</tm>
                <tm tid="11">43</tm>
                <tm tid="12">44</tm>
            </grade>
            <materiais>
                <material>
                <fmatcod>DBR</fmatcod>
                <cores>
                    <cor>
                        <fcrcod>AOC</fcrcod>
                        <eans>
                        <ean tid="1">859513500701</ean>
                        <ean tid="2">859513500718</ean>
                        <ean tid="3">859513500725</ean>
                        <ean tid="4">859513500732</ean>
                        <ean tid="5">859513500749</ean>
                        <ean tid="6">859513500756</ean>
                        <ean tid="7">859513500763</ean>
                        <ean tid="8">859513500770</ean>
                        <ean tid="9">859513500787</ean>
                        <ean tid="10">859513500794</ean>
                        <ean tid="11">859513500800</ean>
                        <ean tid="12">859513500817</ean>
                        </eans>
                    </cor>
                </cores>
                </material>
            </materiais>
        </produto>
    </produtos>
</catalogo>


Salvei o arquivo como .XML

Fazendo da forma que fiz, Isto é um arquivo XML?
Paulao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 183
Data de registro: 09 Jul 2004 11:03
Cidade/Estado: Franca
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Criar um arquivo XML

Mensagempor MSDN » 09 Jan 2018 16:07

Olá,

Link falando o básico sobre XML :
https://www.tecmundo.com.br/programacao/1762-o-que-e-xml-.htm

O que vai definir se o arquivo é um XML, além da própria extensão associada ao nome do arquivo, é o seu formato interno, formado por TAGs (grupos de informações que abrem e fecham), e o que vai dizer se ele é válido, é quem receberá esse arquivo para ler e obter dados, se ele seguir exatamente as regras pré-definidas e/ou possíveis para sua criação, tudo OK.
Nos documentos fiscais exigidos pelo governo (NF-e, NFC-e, MDF-e, etc), vc pode pesquisar que sempre existe um arquivo chamado "schema", que seria o validador de um XML, se o XML entregue ao governo estiver dentro das regras, é validado.
No seu caso, que gera informação para outro sistema, basta saber o layout exigido/aceito, e se procurar aqui no Fórum, achará o link no GIT para baixar a Sefazclass, desenvolvida pelo Quintas, que já tem rotinas para tratar XML, ajuda muito.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

Criar um arquivo XML

Mensagempor Paulao » 10 Jan 2018 19:23

Muito obrigado
Paulao
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 183
Data de registro: 09 Jul 2004 11:03
Cidade/Estado: Franca
Curtiu: 0 vez
Mens.Curtidas: 1 vez

Criar um arquivo XML

Mensagempor JoséQuintas » 10 Jan 2018 20:38

O XML é tudo numa linha só, não dá pra perceber se fez isso.

Mas esta parte está errada, porque começa com um nome e termina com outro.
O primeiro e último blocos desta parte:

<prod>1000 CAT</cod>
<pcategoria>BOTAS DE MATERIAL RECICLADO</pcategoria>
<punid>PR</pcategoria>
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro