Pergunta

Estamos procurando uma biblioteca ou mecanismo de transformação que possa ler qualquer entrada (arquivos EDIfact, CSV, XML, coisas assim.Portanto, arquivos (ou resultados de serviços da web) que contêm dados que devem ser transformados em uma estrutura de objeto de negócios conhecida. Esses dados devem ser transformados em um objeto de negócios existente usando regras personalizadas.XSLT é muito complexo (para aprender) e muito simples (recursos insuficientes)

Alguém pode recomendar uma biblioteca ou mecanismo C#?Eu vi o Altova MapForce, mas gostaria de algo que pudesse enviar para dezenas de pessoas que construirão/projetarão suas próprias transformações sem ter que pagar dezenas de licenças do Altova.

Foi útil?

Solução

Se você acha que XSLT é muito difícil para você, acho que você pode tentar LINQ to XML para analisar arquivos XML.Ele está integrado ao .NET framework e você pode usar C# (ou, se usar VB.NET 9.0, melhor por causa dos literais XML) em vez de aprender outra linguagem.Você pode integrá-lo à aplicação existente sem muito esforço e sem a incompatibilidade de paradigma entre a linguagem e o gerenciamento de arquivos que ocorre com o XSLT.

Microsoft LINQ para XML

Claro, não é uma estrutura ou biblioteca para analisar arquivos, mas nem o XSLT é, então...

Outras dicas

XSLT não funcionará para EDI e CSV.Se você deseja um mecanismo de transformação completamente genérico, talvez seja necessário desembolsar algum dinheiro.Eu tenho usado Sinfonia para lidar com EDI e funcionou, mas não é gratuito.

O problema é que o problema que você está descrevendo parece "empresarial" (tenho certeza de que ninguém usa EDI para se divertir), então não há ferramentas de código aberto/gratuitas para lidar com essas coisas.

Eu não seria tão rápido em descartar o XSLT por ser muito complexo ou por não conter os recursos necessários.

Existem muitos livros/sites por aí que descrevem tudo o que você precisa saber sobre XSLT.Sim, há uma pequena curva de aprendizado, mas não é preciso muito para entrar nela, e sempre há uma grande comunidade como o stackoverflow para recorrer se precisar de ajuda ;-)

Quanto à falta de recursos, você sempre pode estender o XSLT e chamar os conjuntos .NET do XSLT usando o método xslargumentList.adDextensionObject (), o que lhe daria o poder que você precisa.

O MSDN tem um ótimo exemplo de uso disso aqui

É verdade que os aplicativos MapForce e Biztalk tornam a criação de xslt muito fácil, mas também custam um pouco.Além disso, dependendo da sua base de usuários (supondo que não sejam desenvolvedores), acho que você descobrirá que esses aplicativos têm suas próprias curvas de aprendizado e geralmente são ricos em recursos para o que você precisa.

Eu recomendo que você considere criar e distribuir sua própria ferramenta de mapeamento personalizada, específica para as necessidades de seus usuários.

Além disso, se você precisar de uma biblioteca para ajudar nas conversões de arquivos, eu recomendo Ajudantes de arquivos no SourceForge

A DataDirect Technologies possui um produto que faz exatamente isso.No http://www.xmlconverters.com/ existe uma biblioteca chamada XmlConverters que converte EDI em XML e vice-versa.Também existem conversores para CSV, JSON e outros formatos.As bibliotecas estão disponíveis como código gerenciado 100% .net e uma porta paralela em 100% Java.O lado .net oferece suporte a XmlReader e XmlWriter, enquanto o lado Java oferece suporte a SAX, StAX e DOM.Ambos também suportam E/S de fluxo e leitor/gravador.DataDirect também possui um mecanismo XQuery otimizado para mesclar dados relacionais com EDI e XML, mas é apenas Java.

Servidor Microsoft BizTalk faz um trabalho muito bom nisso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top