Em um cenário de integração uma das coisas mais comuns é transformar dados entre origem e destino de tipos distintos, pois cada aplicação contém sua estrutura de dados.
No parágrafo inicial do post com certeza já veio a sua mente o Data Mapper do Magic xpi, pois bem ele é um dos mais usados para este cenário, mas o intuito deste post é apresentar um cenário em que apenas um passo de Data Mapper não é capaz de solucionar.
Imagine um cenário onde a origem é um XML com duas estruturas complexas e o destino um XML com apenas uma estrutura complexa, veja abaixo o cenário que apenas com um passo de Data Mapper não é possível solucionar.
Imagine também sendo o destino um TXT
Nas imagens acima não foi possível conectar e mesmo se fosse possível, ainda haveria o problema de junção lógica (ID = ID) conforme a linha e o total do pedido conforme a elipse marcada, mas como resolver?
Sabemos que no Magic xpi podemos criar lógicas de loop e essa poderia ser uma solução ou usar uma técnica proposta por esse post que é a transformação de XML utilizando o padrão XSLT e o componente XSLT do Magic xpi.
Com o padrão XSLT podemos transformar um XML em outro arquivo XML, HTML, TXT, etc., podemos realizar a formatação, soma, loop, IF, etc. para formar o arquivo final, toda regra de transformação e leitura está no arquivo template de transformação, para maiores informações consulte os sites W3C e W3SCHOOLS.
Basta termos um arquivo XSL para cada transformação.
XSL de transformação para XML:
XSL de transformação para CSV:
No Magic xpi usar o componente XSLT
Configurar o método para transformar utilizando arquivo ou utilizando variáveis blob.
Com isso o arquivo XML:
Será transformado em um novo XML:
Ou em um arquivo CSV:
Note que todos os dados foram respeitados mediante a junção lógica (ID=ID) e também o total do pedido foi gerado.
Clique aqui e baixe o projeto em Magic xpi 4.0 que implementa os passos explicados acima.
DICA: Para os usuários de Magic xpa veja essa possibilidade utilizando o namespace System.Xml.Xsl.XslTransform do .NET.
Olá,
Como posso gerar arquivo .CSV quando a origem que tenho é uma query da base consultada em um Data Maper?
Olá Ivair,
Solicitamos que encaminhe essa dúvida com o nosso Suporte Técnico, enviando um e-mail para suporte@magicsoftware.com.br.