Como utilizar a classe TXMLManager | Ti Responde 0223

No vídeo de hoje, vamos demonstrar em como usar a classe TXMLManager.

A dúvida de hoje, nos perguntaram, se teríamos um exemplo simples de como usar a classe TXMLManager no lugar da XMLParser.

 

Pensando nisso, montamos um exemplo, onde vamos mostrar em como fazer a lógica buscando o conteúdo de uma tag em XML usando a TXMLManager.

 

Segue abaixo o vídeo exemplificando:

 

E abaixo o código fonte desenvolvido:

//Bibliotecas
#Include "tlpp-core.th"

//Declaração da namespace
Namespace custom.terminal.youtube

//Constantes
#Define CRLF Chr(13) + Chr(10) //Carriage Return Line Feed

/*/{Protheus.doc} User Function video0223
Converte uma estrutura em string para um objeto usando TXmlManager
@type Function
@author Atilio
@since 30/04/2025
@see https://tdn.totvs.com/display/tec/Classe+TXmlManager
@example custom.terminal.youtube.u_video0223()
/*/

User Function video0223()
    Local aArea      := FWGetArea() As Array
    Local cXML       := ""          As Character
    Local oXML                      As Object
    Local cName      := ""          As Character
    Local lOk        := .T.         As Logical

    //Monta o XML que será convertido em um Objeto
    cXML := '<?xml version="1.0"?>' + CRLF
    cXML += '<detalhes>' + CRLF
    cXML += '  <nome>Atilio</nome>' + CRLF
    cXML += '  <idade>32</idade>' + CRLF
    cXML += '  <gostaDeLer>sim</gostaDeLer>' + CRLF
    cXML += '</detalhes>' + CRLF

    //Transformando o XML (texto) em um objeto
    oXML := TXmlManager():New()
    lOk := oXML:Parse( cXML )

    //Se houve alguma falha
    If ! lOk
        FWAlertError("Houve um erro na conversão do texto para objeto: " + oXML:Error(), "Falha no 'parse' do XML")
    Else

        //Se conseguir encontrar a tag nome dentro da tag detalhes
        If oXML:XPathHasNode("/detalhes/nome")
            cName := oXML:XPathGetNodeValue("/detalhes/nome")
            FWAlertSuccess("Encontrou a tag nome dentro da detalhes e o contéudo é: " + cName, "Sucesso")
        EndIf

    EndIf

    FWRestArea(aArea)
Return

Bom pessoal, por hoje é só.

 

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação