Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css
Aviso

Documentação de função não suportada ou descontinuado.

Dica
titleSugestão

Recomenda-se a utilização da classe tXmlManager em substituição a função XMLParser.

Motivadores:

  • Ao realizar o parser do XML usando a classe em questão, ela não gera classes dinâmicas, melhorando a execução do programa.
  • Tem performance elevada na execução do parser.
Portuguese

Pagetitle
XmlParserFile
XmlParserFile

Pagetitle
XmlParserFile
XmlParserFile

Esta função permite retornar um objeto, que possui uma estrutura XML, recebido de um arquivo por parâmetro.

Sintaxe

Bloco de código
collapsefalse
XmlParserFile( < cFile >, < cReplace >, < cError >, < cWarning > )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cFile

caractere

Representa o dir etório (a partir do rootpath) e o nome de um arquivo *.xml.

X


cReplace

caractere

Representa o valor que será substituído, pelos caracteres de espaço em branco, na especificação do nó XML.

X


cError

caractere

Caso ocorra algum erro na execução da função, a variável será preenchida com sua descrição.

X

 X

cWarning

caractere

Caso ocorra algum alerta (warning) durante a execução da função, a variável será preenchida com sua descrição.

X

Retorno

Nome

Tipo

Descrição

oXML

objeto

Um objeto com a estrutura de acordo com o XML.

Observações

  • No código-fonte (exemplo) abaixo, observe os seguintes detalhes:
    • A User Function "getObjXML()" realizará a leitura do arquivo xml grqavado no disco.
    • Na variável "cFile", foi informada a string contendo o path e nome do arquivo xml a ser processado, localizado no disco a partir do rootpath do sistema Protheus.
    • A função "XmlParserFile" realizará a leitura do arquivo, analisará se a sintaxe e ordem das tags estão formadas, e gerar um objeto Advpl com a árvore correspondente a estrutura do XML.
    • Caso as tags não sejam formadas, corretamente, a variável (cError e cWarning) retornarão um alerta (warning) ou erro, conforme os parâmetros (@cError e @cWarning) informados por referência.
    • A variável "oXml" retornará o conteúdo do objeto na estrutura de árvore; ou seja, na mesma estrutura XML, onde cada nível da árvore é uma propriedade subsequente do objeto.
    • Após você utilizar os objetos dinâmicos gerados pelo parser, a definição deles continua na memória, a menos que você limpe a definição usando a função DelClassIntf().
  • A estrutura retornada:

    Bloco de código
    languagecpp
    themeEclipse
    linenumberstrue
    collapsefalse
     <ObjXML>
      <NodeXML>
        -<ArrayNodes>
        -REALNAME
        -TEXT
        -TYPE
    

Exemplo

Bloco de código
languagecpp
themeEclipse
linenumberstrue
collapsefalse
  #INCLUDE "TOTVS.CH"
  #INCLUDE "XMLXFUN.CH"

  User Function getObjXML()
  Local cError   := ""
  Local cWarning := ""
  Local cXmlFile := ""
  Local oXml := NIL

  // Arquivo XML
  cXmlFile := "xmlcontent.xml"

  //Gera o Objeto XML
  oXml := XmlParserFile( cXmlFile, "_", @cError, @cWarning )
  If (oXml == NIL )
    MsgStop("Falha ao gerar Objeto XML : "+cError+" / "+cWarning)
    Return
  Endif

  // Mostrando a informação do Node
  MsgInfo(oXml:_PEDIDO:_NOMECLIENTE:Text,"Cliente")

  Return oXml

  // Exemplo de conteúdo do arquivo xmlcontent.xml
  /*
  <?xml version="1.0" encoding="ISO-8859-1"?>
  <pedido>
   <Nome_Cliente>Microsiga Software</Nome_Cliente>
    <Endereco>Av. Braz Leme</Endereco>
     <Numero>1361</Numero>
  	  <Data>22-03-2005</Data>
      <Itens>
  	   <Item>
  		<Produto>Protheus</Produto>
         <Quantidade>1</Quantidade>
         <Preco>100.00</Preco>
       </Item>
      </Itens>
  </pedido>
  */
Bloco de código
languagecpp
themeEclipse
titleImportante
linenumberstrue
Após utilizar a XmlParser() e XmlParserFile(), ocorre a criação dinâmica do objeto XML pelo parser.
Após você utilizar os objetos dinâmicos gerados pelo parser, a definição deles continua na memória, a menos que você limpe a definição usando a função DelClassIntf().
 
Sugestão
Fazer o parser XML usando a classe tXmlManager(), ela não gera classes dinâmicas, logo ela não têm este problema.
Esta classe é bem mais leve e mais rápida para fazer o parser.
https://tdn.totvs.com/display/tec/Classe+TXmlManager


Veja também