Documentação de função não suportada ou descontinuado.
Sugestã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.
Descrição
Esta função permite retornar um objeto, que possui uma estrutura XML, recebido de um arquivo por parâmetro.
Sintaxe
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 | 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:
<ObjXML> <NodeXML> -<ArrayNodes> -REALNAME -TEXT -TYPE
Exemplo
#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>
*/