Página 1 de 1

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 17 Set 2024 15:29
por Alexandre Silva
Opa
Quem faz averbacao via webservice da AT&M, sabe que precisa mandar o XML do cte ou manifesto como string
Pra isso usamos ![CDATA [
O problema é que estou tentando averbar um xml, mas emitido por terceiros, onde eles usam [CDATA dentro do xml,
na parte que faz referencia ao endereco de QrCode.

O que fazer entao, ja tentei tira o CDATA do xml original mas o webserver nao aceita.

Como mandar um arquvo xml com CDATA[ se o xml já tem CDATA{ no conteudo ?
Ao mandar o arquivo fica truncado bem na parte que tem o CDATA{ do arquivo original

cxlido:=alltrim(HB_Memoread(varqxml))
cXml:=' <usuario xsi:type="xsd:string">'+vusuatm+'</usuario>'+hb_eol()+;
' <senha xsi:type="xsd:string">'+vsenhaatm+'</senha>'+hb_eol()+;
' <codatm xsi:type="xsd:string">'+vcodatm+'</codatm>'+hb_eol()+;
' <xmlCTe xsi:type="xsd:string"><![CDATA['+cxlido+']]></xmlCTe>'+hb_eol()

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 09:49
por malcarli
Resposta do pessoal da unimake para uma dúvida semelhante, veja se resolve ok


Na hora de gerar o XML a sua tag está assim (ignore os espaços que eu coloquei para alinhar as duas linhas e veja os destaques em vermelho):

<infAdProd>" Pedido Cliente:"LEO";< ![CDATA[< ped="LEO"/> ]]> ;</infAdProd>

Modifique para gerar assim (veja destaques em vermelho):

<infAdProd>" Pedido Cliente:"LEO";<![CDATA[<ped="LEO"/>]]>;</infAdProd>

Duas linhas na sequência para facilitar identificar as mudanças:

<infAdProd>" Pedido Cliente:"LEO";< ![CDATA[< ped="LEO"/> ]]> ;</infAdProd>
<infAdProd>" Pedido Cliente:"LEO";<![CDATA[<ped="LEO"/>]]>;</infAdProd>

Basicamente coloquei o caractere escape dos sinais de maior e menor.

Faz o teste, por favor.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 10:17
por Alexandre Silva
Obrigado,
Sobre esses caracteres, tambem procurei , mas quem gera o xml nao sou eu, é uma XML emitido por terceiros, que emitem como se fosse nossa empresa
Nao tenho como pedir para eles mudarem, nao temos acesso.

Mudar no string lido, esssa parte do [DATA[ para esses caracteres tambem nao funciona
retorna: XML invalido para utilizacao neste webserver

Preciso averbar o xml, mandando como string para o Webservice

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 16:21
por JoséQuintas
Alexandre Silva escreveu:O problema é que estou tentando averbar um xml, mas emitido por terceiros, onde eles usam [CDATA dentro do xml,
na parte que faz referencia ao endereco de QrCode.
Não lembro.
Já tentou arrancar tudo fora.

No exemplo do ACBR..... sei lá... eu uso o lugar correto de informar número de pedido de compra e sequencial do produto, conforme manual da Fazenda.
Se a moda pega ferrou, porque além de fugir do formato da nota eletrônica também foge do formato de XML, acaba sendo um formato inválido.
Ok, existe uma opção de converter pra formato internet para que < e > não sejam interpretados como início/fim de marca de xml, mas.... sei lá...

Lembrando: (evitando problema de formatação do site)

[nome]dsfdsfdsfd[/nome]

[nome]sdfdsfsdd[CDATA][/nome]

Isso tornou o XML inválido. Abriu um bloco sem fechar no meio do outro.
Sei lá como a Fazenda aceitou isso, talvez tenha sido feita conversão antes de transmitir, mas vai trazer problema pra tudo que vier depois.
Eu até baixaria o XML oficial da Fazenda pra ver se foi isso mesmo que foi autorizado.
Senão, eles estão autorizando um, e enviando outro.

É por isso que eu uso minha sefazclass, e só XML.
Ficar usando componente de terceiros, sai merd. e ninguém percebe.
Sei lá se isso dá multa....

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 16:47
por JoséQuintas
Voltando ao webservice:

Um erro no xml de dentro causa erro no xml de fora.

O ponto é tentar verificar é se está reclamando do XML do envelope, ou do XML que está no CDATA.
Tentar transmitir qualquer coisa no lugar do xml pra ver se o retorno é o mesmo.
Isso resolve a dúvida sobre XML de comunicação estar correto.

A partir daí tem a ver com o XML do documento mesmo.
É resolver a questão do XML.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 17:19
por Itamar M. Lins Jr.
Olá!
Se não estou enganado em HTML <! é a tag de comentário.
Tá aqui uma explicação:
https://stackoverflow.com/questions/608 ... ean-in-xml
Captura de imagem_20240918_172134.png
Saudações,
Itamar M. Lins Jr.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 17:29
por Itamar M. Lins Jr.
Olá!
Faltou ver como inicia e termina o tal cxlido! Tem que começar com <qrcode>nCodigo</qrcode> ou algo parecido.

Saudações,
Itamar M. Lins Jr.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 17:43
por Alexandre Silva
respondendo acima
Se o xml do cte nao tiver o [CDATA[ , funciona 100%

Dentro do xml esta essa tag,(mudei a chave ai para postar ok)
<infCTeSupl>
<qrCodCTe>
<![CDATA[ https://dfe-portal.svrs.rs.gov.br/cte/q ... 49&tpAmb=1 ]]>
</qrCodCTe>
</infCTeSupl>


Encontrei isso
Mas nao entendo os exemplos ai

Código: Selecionar todos

https://www.soapui.org/docs/functional-testing/working-with-cdata/
Se um documento XML incorporado contiver uma seção CDATA, a tag de fechamento incorporada ( ]]>) encerra a seção CDATA externa. Portanto, você não pode incorporar uma seção CDATA diretamente. Você terá que encerrar temporariamente a seção CDATA externa antes de inserir o terminador da seção CDATA interna. Suponha que você tenha a seguinte string:

https://www.soapui.org/docs/functional- ... ith-cdata/

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 18:32
por JoséQuintas
É exatamente o que postei antes.
xml precisa começo e fim.

Código: Selecionar todos

<infAdProd>......<!{CDATA]>dddddd></infAdProd>
Tá vendo lá <infAdProd> isso é abertura de bloco
Tá vendo lá </infAdProd> isso é fechamento de bloco
Tá vendo lá <!{CDATA isso é considerado abertura de bloco

Se tem abertura, cadê o fechamento ?

gambiarra 1: usar a conversão &gt &lt pra esconder o maior/menor e não ser considerado bloco
Vai virar tudo texto de infAdProd

gambiarra 2: definir um bloco pra colocar o data dentro pra ser considerado string e não parte do xml
Isso cria um bloco verdadeiro com o conteúdo dentro.

Pode tentar uma gambiarra 3, que nào tem lá na página, o final de bloco único.
É normal até em página de internet, que também é XML, a barra final.

Código: Selecionar todos

<!{DATA}.....]]] />

Sobre o outro assunto:
pra postar URL é tudo na mesma linha
Quando digita url numa linha sozinha, assume automático, mas aí ficam os pontos e não consegue enxergar inteira depois, ao editar a mensagem.
Fiz a edição [-url-]endereco[-/url-]
Aqui os hífens são igual seu problema com CDATA, é a gambiarra pro site não traduzir pra link. vai usar assim, sem os hífens.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 19:46
por Alexandre Silva
Obrigado pelo retorno
Devo deixar claro que nao posso mudar o xml do cliente, nao sou eu quem faz esse ai, e o xml esta correto sim.

Se tento mudar o conteudo da string (cxlido) apos lido, mudando <> ou mesmo tirando o [CDATA usando subst
recebo a mensagem :
XML invalido para utilizacao neste webserver

Entao o que tentei mudar foi a forma de mandar
que é nessa linha
<xmlCTe xsi:type="xsd:string"> <![CDATA['+cxlido+']]> </xmlCTe>'+hb_eol()

se mudo algum caracter , < > seja os <> ou mudar ] ou mudar ou acrescentar />
recebo a mensagem:
Invalid character as tag name ou Xml nao enviado

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 19:59
por JoséQuintas
Ninguém tá falando de alterar XML de cliente.
É alterar só pro envio.

Mas no cliente, pode sugerir mudanças pras próximas.
Caso exista alternativa.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 18 Set 2024 20:57
por Itamar M. Lins Jr.
Olá!
<message><![CDATA[<data>some embedded xml <![CDATA[<text>with xml</text>]]]]>><![CDATA[</data>]]></message>
The first CDATA section wraps the following text: <data>some embedded xml <![CDATA[<text>with xml</text>]].
Note that this CDATA section does not contain the > character that would turn the last three characters into the CDATA terminator.
Then comes a single character >. This character is not treated as a markup, so there is no need to convert it to the > entity.
Another CDATA section contains the string </data>.
Acredito que isso ai na URL que vc mesmo postou, vai resolver.
É CDATA dentro de CDATA.

Saudações,
Itamar M. Lins Jr.

CDATA[ de xml com CDATA[ ( Averbacao AT&M)

Enviado: 19 Set 2024 09:25
por Ana Mitoooo
\contrib\hbmxml

Código: Selecionar todos

   mxmlGetCDATA
   mxmlNewCDATA
   mxmlSetCDATA