Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Alterar o encoding do xml com Camel

É correto utilizar o o .transform(body().regexReplaceAll("ISO-8859-1", "utf-8")) para alterar o cabeçalho do XML? Se utilizar apenas o convertBodyToByte não é alterado do cabeçalho do xml (<?xml version="1.0" encoding="ISO-8859-1"?>). Gostaria que o arquivo do endpoint saida esteja com cabeçalho <?xml version="1.0" encoding="utf-8"?>

<?xml version="1.0" encoding="ISO-8859-1"?>
<empresa>
    <infoarq>
        <codorgao>00424776</codorgao>
package br.com.fnkgw.camel.pedido;

import org.apache.camel.builder.RouteBuilder;
import org.springframework.stereotype.Service;

@Service
public class TransformaService extends RouteBuilder {

    public void configure() throws Exception {
        from("file:original?noop=true&charset=ISO-8859-1")
        .convertBodyTo(byte[].class, "utf-8")
        .transform(body().regexReplaceAll("ISO-8859-1", "utf-8"))
        .log("${body}")
        .to("file:saida?charset=utf-8");
    }

}
1 resposta
solução!

Fala aí Fernando, blz?

Cara não que esteja errado, mas o transform é geralmente utilizado para transformar um tipo de mensagem para outra (por exemplo: de JSON para XML ).

Outra forma de resolver esse problema é utilizando setBody.

Por exemplo:

from("file:original?noop=true&charset=ISO-8859-1")
. setBody(simple("body.replaceAll(\"ISO-8859-1\",\"UTF-8\")"))

Espero ter ajudado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software