Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 6 Próxima »

Função: XmlC14N

Esta função permite aplicar o algoritmo canonicalization C14N na string que contém um XML.

XmlC14N( < cXML>, < cOption>, < @cErro>, < @cWarning> ) --> cRetXML

 

NomeTipoDescriçãoObrigatórioReferência
cXMLCaracterIndica o conteúdo XML que assumirá a formato canonical.X 
cOptionCaracterReservado para implementação futura. Deve ser informada uma string em branco.X 
cErroCaracterRetorna uma descrição de erro, em caso de falha no Parser.XX
cWarningCaracterRetorna uma descrição de advertência emitida pelo Parser.XX

 

cRetXML
    (caracter)
  • Retorna o XML recodificado na forma canonical.

Um algoritmo de canonicalization tem o objetivo de aplicar as seguintes regras em um XML:

  • Normalizar quebras de linha
  • Normalizar valores de atributos
  • Trocar seções  CDATA pelo seu conteúdo explícito


Essa função atende às especificação W3C - World Wide Web Consortium REC-xml-c14n-20010315 . A função  XmlC14N() aplica a canonicalização na string XML informada como parâmetro em conformidade com a especificação de canonicalização C14N 1.0 ( não-exclusiva), removendo comentários. 

Observações

  • Caso a string XML informada como parâmetro não seja válida, não seja um XML, caso seja um XML mal-formado, a aplicação Advpl será interrompida com uma ocorrência de erro fatal "Failed to parse XML".
  • Caso a string XML seja vazia, a aplicação AdvPL será interrompida com uma ocorrência de erro fatal "Invalid empty document on XmlC14N".
  • Caso a string XML seja válida, porém o processo de canonicalização não seja completo com sucesso, a função retonará uma string em branco. 

Importante

Em build superior a 7.00.121227P há mudança de comportamento na canocanilização do caracter de referência &#x20;.

 

User function tstC14N()
Local cError := ""
Local cWarning := ""
Local cXml := memoread("\xml\example.xml")
Local cXmlRet := ""

cXmlRet := XmlC14N( cXML , "" , @cError, @cWarning)

if ( Len(cXmlRet) > 0 )
memowrite("\xml\canonical.xml", cXmlRet)
else
conout("Nao foi possível canonicalizar o XML")
varinfo("cError", cError)
varinfo("cWarning", cWarning)
endif

Return
Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10

 

  • Sem rótulos