Olá pessoal. Preciso de uma ajuda recebo xmls de fornecedores, e preciso gravar os mesmos no banco. nao sei se existe como gravar arquivo (fisico) no banco, ja vi algo parecido com imagens. entao tentei fazer o seguinte importar o XML, para uma variavel longchar mas eu nao consigo manipular a mesma, pois quando vou importar uso o INPUT/IMPORT UNFORMATED e ele me traz o XML em apenas uma linha, precisaria quebrar essas linhas quando ele encontrasse o texto "><" ou seja, abrir/fechar tag do XML, algém sabe como fazer isso ? att Daniel Luiz Sufiatti
Você pode usar o PUT para escerver lembrando que no xml vc deve usar "" para delimitar uam aspas simples que fica drntro da tag, para que brar linha é só usar o PUT com AT 1 no final. Veja se o código abaixo te ajuda: OUTPUT TO VALUE("c:\PF160075.mac"). /*cabeçalho padrão*/ PUT "<HAScript name=""macropf3"" description="""" timeout=""60000"" pausetime=""300"" promptall=""true"" blockinput=""false"" author=""dcont_s2adj3"" creationdate=""27/09/2010 16:18:51"" supressclearevents=""false"" usevars=""false"" ignorepauseforenhancedtn=""true"" delayifnotenhancedtn=""0"" ignorepausetimeforenhancedtn=""true"">" AT 1. PUT "<screen name=""Tela1"" entryscreen=""true"" exitscreen=""false"" transient=""false"">" AT 1. PUT "<description >" AT 1. PUT "<oia status=""NOTINHIBITED"" optional=""false"" invertmatch=""false"" />" AT 1. PUT "</description>" AT 1. PUT "<actions>" AT 1. PUT "<mouseclick row=""22"" col=""11"" />" AT 1. PUT "<input value="">pf[enter]"" row=""0"" col=""0"" movecursor=""true"" xlatehostkeys=""true"" encrypted=""false"" />" AT 1. PUT "</actions>" AT 1.
Daniel, Qual o motivo de você não conseguir importar? Só porque ficou tudo na mesma linha? Não faz sentido... Para o parser do XML espaço em branco não significa nada. Então mesmo que esteja tudo na mesma linha, se o XML é válido ele é válido e ponto.
olá pessoal, obrigado pela ajuda, antenor, a variavel do tipo longchar, não aceita output/ Input, tentei esse que voce mandou, aparece o erro "Operações de INPUT/OUTPUT não são permitidas para variáveis do tipo RAW, ROWID, MEMPTR, BLOB, CLOB ou LONGCHAR." mas agora ja consegui, criei um campo xml na minha tabela, do tipo CLOB ai consigo repassar a ele a variavel longchar. para ler o xml, utilizei o COPY-LOB ex: COPY-LOB CADASTRO.CTE.XML TO FILE "C:\TESTE.xml". e ele faz certinho obrigado pela ajuda pessoal
Pessoal estou precisando importar o conteúdo de um arquivo xml para uma variável seria esse o procedimento?
faça como código abaixo. pega o xml e transforma em uma longchar, depois cria o x-documento e manda para temp como o código ou direto bara a tabela do banco se preferir. def var Hdoc as handle. def var Hroot as handle. create x-document HDoc. Hdoc:load("LONGCHAR","c-file.xml",false). create x-noderef hroot. hDoc:get-document-element(hroot). procedure obtemnode. def input parameter vh as handle. def var hc as handle. def var loop as int. create x-noderef hc. do loop = 1 to vh:num-children: vh:get-child(hc,loop). run obtemnode (input hc:handle). case vh:name : when "Tipo" then do: create tt-dadosretorno. if hc:node-value <> "" then assign tt-dadosretorno.tipo = hc:node-value. end. when "valor" then do: if hc:node-value <> "" then assign tt-dadosretorno.valor = hc:node-value. end. when "Texto" then do: if hc:node-value <> "" then assign tt-dadosretorno.texto = hc:node-value. end. when "Msg" then do: if hc:node-value <> "" then assign tt-dadosretorno.msg = hc:node-value. end. end case. end. end.