Usar método load() para ler um XML

Discussão em 'Progress 4GL' iniciado por fnmattos, Junho 12, 2014.

  1. fnmattos

    fnmattos Sem Pontuação

    Boa tarde,

    estou lendo um xml utilizando o método load() como abaixo:


    create x-document hXDOC.
    hXDOC:load("file",c-link, false).


    Quando ao ambiente não possui proxy, funciona. Quando possui, tem sido retornado o erro 9082, que diz em parte, "Type:NetAccessorException when loading a XML document".

    Alguma sabe como resolver? É possível informar um proxy para este comando?

  2. Cobra.cne

    Cobra.cne Equipe de Suporte Moderador

    don.junior curtiu isso.
  3. fnmattos

    fnmattos Sem Pontuação

    Obrigado pela resposta Cleilton.

    Quando utilizo o 'no-errror' ele retorna apenas a primeira linha dessa forma:

    <?xml version="1.0" ?>

    Quando o ambiente não proxy, o retorno da primeira linha, além de todo conteúdo que não vem no caso descrito, é:

    <?xml version="1.0" encoding="UTF-8" ?>
  4. lwazevedo

    lwazevedo Membro Ativo

    Eu utilizo desta forma e nuca tive problema.

    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.
  5. TrombiniSP

    TrombiniSP Membro Participativo

    Este erro pode ocorrer quando seu XML possui XSD Schemas ou Namespaces. Ao executar o LOAD() mesmo com a opção False para validação acontece a tentativa de acessar as URLs definidas no XML (mesmo que não vá usar para validar).

    No trecho que código abaixo vc pode ver como poderia estar em seu XML, é algo parecido com isso.
    Código:
    <?xml version="1.0" encoding="UTF-8" ?>
    <feed xmlns="http://www.w3.org/2005/Atom"  xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" 
    xmlns:gf="http://schemas.google.com/finance/2007"
    xmlns:gd="http://schemas.google.com/g/2005" >
    Verifique seu XML. Alguma URL deve conter uma string, porta ou similares que estão bloqueados no seu proxy.

    Veja quais são. Tente fazer o acesso via browser usando proxy e acesso sem proxy. Encontrando a URL peça pra seu admin. de rede colocá-la numa regra de exceção.

    Acho que é isso. Espero que ajude.

    Abs

Compartilhe esta Página