1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Leitura de XML

Discussão em 'Progress 4GL' iniciado por erickles, Abril 6, 2009.

  1. erickles

    erickles Membro Participativo

    Fala pessoal,

    Alguem conhece algum tutorial, programa que leia e escreva arquivos XML ?
  2. sl4v3r

    sl4v3r Membro Participativo

    Qual eh a versao do progress?
    Existe o read-xml e o write-xml.
  3. erickles

    erickles Membro Participativo

    Versão 9.1, vou testar essas funções, valeu!
  4. sl4v3r

    sl4v3r Membro Participativo

    Exemplo com SAX

    Código:
    DEFINE VARIABLE c-msg-xml  AS MEMPTR  NO-UNDO.
    DEFINE VARIABLE hSAXWriter AS HANDLE  NO-UNDO. 
    DEFINE VARIABLE lok        AS LOGICAL NO-UNDO. 
    
    CREATE SAX-WRITER hSAXWriter.
    hSAXWriter:STRICT    = FALSE.
    hSAXWriter:FORMATTED = TRUE. 
    
    lok = hSAXWriter:SET-OUTPUT-DESTINATION("MEMPTR", c-msg-xml). 
    
    lok = hSAXWriter:START-DOCUMENT(). 
    lok = hSAXWriter:START-ELEMENT("pessoas"). 
    
    FOR EACH pessoa
         NO-LOCK:
    
        lok = hSAXWriter:START-ELEMENT("pessoa"). 
        lok = hSAXWriter:WRITE-DATA-ELEMENT("nome"     , pessoa.nome). 
        lok = hSAXWriter:WRITE-DATA-ELEMENT("endereco" , pessoa.endereco).  
        lok = hSAXWriter:WRITE-DATA-ELEMENT("idade"    , pessoa.idade). 
        lok = hSAXWriter:WRITE-DATA-ELEMENT("sexo"     , pessoa.sexo).
        lok = hSAXWriter:END-ELEMENT("pessoa"). 
    
    END.
    
    lok = hSAXWriter:END-ELEMENT("pessoas").
    lok = hSAXWriter:END-DOCUMENT().
    
    DELETE OBJECT hSAXWriter.
    
    OUTPUT TO teste.xml.
    
    EXPORT c-msg-xml.
    
    OUTPUT CLOSE.
    Exemplo com Write-XML

    Código:
    DEFINE TEMP-TABLE Pessoa
          FIELD nome    AS CHARACTER 
          FIELD idade   AS INTEGER
          FIELD sexo    AS CHARACTER
          FIELD salario AS DECIMAL.
    
    DEFINE VARIABLE cTargetType AS CHARACTER NO-UNDO. 
    DEFINE VARIABLE cFile AS CHARACTER NO-UNDO. 
    DEFINE VARIABLE lFormatted AS LOGICAL NO-UNDO. 
    DEFINE VARIABLE cEncoding AS CHARACTER NO-UNDO. 
    DEFINE VARIABLE cSchemaLocation AS CHARACTER NO-UNDO. 
    DEFINE VARIABLE lWriteSchema AS LOGICAL NO-UNDO. 
    DEFINE VARIABLE lMinSchema AS LOGICAL NO-UNDO. 
    DEFINE VARIABLE retOK AS LOGICAL NO-UNDO. 
    
    CREATE Pessoa.
       ASSIGN Pessoa.nome    = 'carlos'
              Pessoa.idade   = 25
              Pessoa.sexo    = 'm'
              Pessoa.salario = 1000.
    
    CREATE Pessoa.
       ASSIGN Pessoa.nome    = 'joao'
              Pessoa.idade   = 16
              Pessoa.sexo    = 'm'
              Pessoa.salario = 500.
              
    CREATE Pessoa.
       ASSIGN Pessoa.nome    = 'rita'
              Pessoa.idade   = 32
              Pessoa.sexo    = 'f'
              Pessoa.salario = 2000.
    
    CREATE Pessoa.
       ASSIGN Pessoa.nome    = 'aline'
              Pessoa.idade   = 22
              Pessoa.sexo    = 'f'
              Pessoa.salario = 1270.
     
    ASSIGN 
         cTargetType = "file" 
         cFile = "pessoa.xml"  
         lFormatted = YES 
         cEncoding = ? 
         cSchemaLocation = ? 
         lWriteSchema = NO 
         lMinSchema = NO. 
    
    retOK = TEMP-TABLE Pessoa:WRITE-XML(cTargetType, 
                                        cFile,lFormatted, 
                                        cEncoding, 
                                        cSchemaLocation, 
                                        lWriteSchema, 
                                        lMinSchema). 
  5. Agnaldo

    Agnaldo Membro Ativo

    Usando a API do StarWeb FrameWork para gerar o XML.

    Código:
    { cgi/cgi-cgi.i &carregarSuportePara="XML"}
    documentoXML-AbrirDocumento("c:\clientes.xml").
    documentoXML-Tabela("dados").
    FOR EACH Customer NO-LOCK:
        documentoXML-Registro("cliente").
        documentoXML-Campo("codigo",STRING(Customer.Cust-Num,"9999")).
        documentoXML-Campo("nome",Customer.Name).
        documentoXML-Campo("pais",Customer.Country).
    END.
    documentoXML-FecharDocumento().
    
    Usando a API do StarWeb FrameWork para ler o XML.

    Código:
    DEFINE TEMP-TABLE Clientes FIELD codigo AS INTEGER
                               FIELD nome   AS CHARACTER
                               FIELD pais   AS CHARACTER.
    
    { cgi/cgi-http.i}
    
    setEnderecoDoArquivoXml("c:\clientes.xml").
    { cgi/xml-load.i &tabela="Clientes" }
    /* Nesse ponto a tabela já foi carregada */
    
  6. sl4v3r

    sl4v3r Membro Participativo

    Esse starweb framework eh free?
    Que q ele faz?

Compartilhe esta Página