Ajude o site desativando o bloqueador de anúncio
Cabeçalho

ADVPL XMLFormat beautiful Formatter

Autor: Eurai Criado: 21/11/2025 Atualizado: 21/11/2025 ADVPL
Postagem

✨ ADVPL – XMLFormat Beautiful Formatter

 

✅ Exemplo prático em ADVPL

/*/{Protheus.doc} XMLFormat
Formata uma string com tags XML acrescetando quebra de linha e tabulação
@since 28/06/2018
@return cTextoNovo, String formatada
@param cTextoOrig, characters, String que sera formatada
/*/
User Function XMLFormat(cTextoOrig)

 Local cTextoNovo := ""
 Local aLinhas    := {}
 Local cEspaco    := ""
 Local nAbriu     := 0
 Local nAtual     := 0

 If ! Empty(cTextoOrig)

  cTextoNovo := StrTran(cTextoOrig, ">" + TAB, ">" + CRLF + TAB)
  cTextoNovo := StrTran(cTextoNovo, "><", ">" + CRLF + "<")

  aLinhas := StrTokArr(cTextoNovo, CRLF)
  cTextoNovo := ""

  // Percorre as linhas adicionando tabulacao
  For nAtual := 1 To Len(aLinhas)

   aLinhas[nAtual] := FwCutOff(AllTrim(aLinhas[nAtual])) // Retira TAB e CRLF

   If ! Empty(aLinhas[nAtual])

    // Se for fechamento de tag, diminui a tabulacao
    If "</" $ aLinhas[nAtual] .And. At('<', SubStr(aLinhas[nAtual], 2, Len(aLinhas[nAtual]))) == 0
     nAbriu -= 1
    EndIf

    // Definindo a quantidade de espacos em branco, conforme numero de tags abertas
    cEspaco := ""
    If nAbriu > 0
     cEspaco := Replicate( TAB, nAbriu)
    EndIf

    // Monta o texto com a tabulacao
    cTextoNovo += cEspaco + aLinhas[nAtual] + CRLF

    // Se for abertura de tag, e nao for fechamento na mesma linha, aumenta a tabulacao
    If "<" $ aLinhas[nAtual] .And. ! "</" $ aLinhas[nAtual] .And. ! "/>" $ aLinhas[nAtual]
     nAbriu += 1
    EndIf
   EndIf
  Next
 EndIf

Return cTextoNovo
Return( Nil )

 

📌 Observações

  • Função extremamente útil para organizar XML de forma legível 👀
  • Ideal para logs, debug e validações.
  • Eficiente e simples de implementar.

 

🔗 Fontes: Código compartilhado pelo Endrigo.

 

Gostou? Então compartilhe com sua galera dev e deixe um comentário! 😎🚀

ASSINE A NEWSLETTER

Cadastrando...

PIX uDesenv

PIX QR Code para depósito

Clique para doar

Parceiros

Tudo em ADVPL - Blog parceiro

Blog ADVPL