Carregar xml em tabela temporaria

Discussão em 'Progress 4GL' iniciado por asbahr, Outubro 1, 2010.

  1. asbahr

    asbahr Membro Participativo

    Bom dia

    Alguem teria algum ideia de como carregar um arquivo XML em uma tabela temporaria?

    Muito Obrigado,
  2. LeandroSantos

    LeandroSantos Membro Participativo

    Depende do arquivo que voce quer ler.
    Se for um arquivo que precise de apenas uma temp-table voce pode usar o comando READ-XML.
    Se for um arquivo da NF-e que é preciso varias tabelas "READ-XML" não funciona, ai voce vai ter que ler o arquivo XML tag a tag e tratar os dados.

    Exemplo para ler XML:
    Código:
    def var Hdoc  as handle.
    def var Hroot as handle.
    
    create x-document HDoc.
    Hdoc:load("file","d:\nf-e\teste.xml",false).
    create x-noderef hroot.
    hDoc:get-document-element(hroot).
    run obtemnode (input 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).
            if hc:subtype = "text"
            then disp 
                    vh:name
                    hc:node-value format "X(30)"
                    with frame mostra.
            run obtemnode (input hc:handle).
        end.
    end.
  3. asbahr

    asbahr Membro Participativo

    Boa Tarde

    Voce teria um exemplo ler o arquivo XML tag a tag ?
    O arquivo que estou querendo ler e os da ANS SIP ou DIOPS.

    Obrigado.
  4. LeandroSantos

    LeandroSantos Membro Participativo

    O exemplo que coloquei no post anterior faz isso, le o arquivo e te mostra o nome da tag e o valor.
  5. asbahr

    asbahr Membro Participativo

    Boa tarde Leandro,

    Esta verificando o programa que você me enviou... muito legal...

    Porem so para mim entender:

    Ele so alguns trechos do XML né?
    Por exemplo um trechinho do arquivo que estou usando:

    -<dataTrimestreOcorrencia>
    <dia>01</dia>
    <mes>07</mes>
    <ano>2009</ano>
    </dataTrimestreOcorrencia>

    O programa exibi o seguinte: somente o dia = 01 / depois mes = 07 / depois = 2009. Você saberia me dizer se consegui carregar em uma variavel a linha do xml -<dataTrimestreOcorrencia>.

    muito obrigado,
  6. LeandroSantos

    LeandroSantos Membro Participativo

    Tire o "if hc:subtype = "text" then" que vai mostrar todos os dados do seu XML.

Compartilhe esta Página