Nesse vídeo demonstraremos a utilização da função IsXMLNode, que serve para validar se um nó (ou node) existe dentro de um XML.
Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:
//Bibliotecas
#Include "TOTVS.ch"
/*/{Protheus.doc} User Function zExe315
Valida se um nó existe dentro de uma tag em XML
@type Function
@author Atilio
@since 23/02/2023
@obs
Função IsXMLNode
Parâmetros
+ oObj , Objeto , Nome do objeto instânciado
+ cAttName , Caractere , Nome da propriedade sendo pesquisada
+ lRecursive , Lógico , Indica se a pesquisa também será feita em classes superiores
Retorno
+ lRet , Lógico , Retorna .T. se encontrou a tag ou .F. se não encontrou
**** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/
User Function zExe315()
Local aArea := FWGetArea()
Local cXML := ""
Local oXML
Local oDetalhes
Local cAviso := ""
Local cErro := ""
//Monta o XML que será convertido em um Objeto
cXML := '' + CRLF
cXML += '' + CRLF
cXML += ' Atilio ' + CRLF
cXML += ' 29 ' + CRLF
cXML += ' sim ' + CRLF
cXML += ' ' + CRLF
cXML += ' ' + CRLF
cXML += ' Terminal de Informacao ' + CRLF
cXML += ' terminaldeinformacao.com ' + CRLF
cXML += ' ' + CRLF
cXML += ' ' + CRLF
cXML += ' Atilio Sistemas ' + CRLF
cXML += ' atiliosistemas.com ' + CRLF
cXML += ' ' + CRLF
cXML += ' ' + CRLF
cXML += ' ' + CRLF
//Transformando o XML (texto) em um objeto
oXML := XmlParser(cXML, "_", @cAviso, @cErro)
//Se houve alguma falha
If ! Empty(cErro)
FWAlertError("Houve um erro na conversão do texto para objeto: " + cErro, "Falha no 'parse' do XML")
Else
//Pega a "subtag" de detalhes
oDetalhes := oXML:_detalhes
//Realizando a procura de tag (similar a XMLChildEx)
If IsXmlNode(oDetalhes, "_gostaDeLer")
FWAlertInfo("A tag 'gostaDeLer' foi encontrada no objeto, sendo: " + oDetalhes:_gostaDeLer:TEXT, "Exemplo de IsXmlNode")
EndIf
EndIf
FWRestArea(aArea)
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.