我们正在寻找一个转换库或引擎,它可以读取任何输入(EDIfact 文件、CSV、XML 之类的东西。因此,包含必须转换为已知业务对象结构的数据的文件(或 Web 服务结果)。)这个应使用自定义规则将数据转换为现有业务对象。XSLT 既复杂(学习)又简单(功能不足)
有人可以推荐一个 C# 库或引擎吗?我已经看过 Altova MapForce,但我希望我可以向数十人发送一些东西,他们将构建/设计自己的转换,而无需支付数十个 Altova 许可证。
我们正在寻找一个转换库或引擎,它可以读取任何输入(EDIfact 文件、CSV、XML 之类的东西。因此,包含必须转换为已知业务对象结构的数据的文件(或 Web 服务结果)。)这个应使用自定义规则将数据转换为现有业务对象。XSLT 既复杂(学习)又简单(功能不足)
有人可以推荐一个 C# 库或引擎吗?我已经看过 Altova MapForce,但我希望我可以向数十人发送一些东西,他们将构建/设计自己的转换,而无需支付数十个 Altova 许可证。
如果您认为 XSLT 对您来说太难了,我认为您可以尝试使用 LINQ to XML 来解析 XML 文件。它集成在 .NET 框架中,您可以使用 C#(或者,如果您使用 VB.NET 9.0,则更好,因为 XML 文字)而不是学习另一种语言。您可以毫不费力地将它与现有应用程序集成,并且不会出现 XSLT 出现的语言和文件管理之间的范式不匹配。
当然,它不是用于解析文件的框架或库,但 XSLT 都不是,所以...
XSLT 不适用于 EDI 和 CSV。如果您想要一个完全通用的转换引擎,您可能需要花一些钱。我曾使用Symphonia处理 EDI,它有效,但它不是免费的。
问题是您所描述的问题听起来“企业”(我相信没有人会为了好玩而使用 EDI),所以没有开源/免费工具来处理这些东西。
我不会这么快就认为 XSLT 太复杂或不包含您需要的功能而将其驳回。
有很多书籍/网站描述了您需要了解的有关 XSLT 的所有信息。是的,有一点学习曲线,但不需要太多学习,如果你需要帮助,总有一个很棒的社区,比如 stackoverflow ;-)
至于缺少功能,您始终可以使用 XsltArgumentList.AddExtensionObject() 方法扩展 xslt 并从 xslt 调用 .NET 程序集,这将为您提供所需的功能。
MSDN在这里有一个很好的例子
的确,MapForce 和 Biztalk 应用程序使创建 xslt 变得非常容易,但它们也需要一些成本。此外,根据您的用户群(假设非开发人员),我认为您会发现这些应用程序有自己的学习曲线,并且通常功能过于丰富,无法满足您的需求。
我建议您考虑针对您的用户需求构建和分发您自己的自定义映射工具。
此外,如果您需要一个库来协助文件转换,我会推荐SourceForge 的FileHelpers
DataDirect Technologies 有一款产品可以做到这一点。在http://www.xmlconverters.com/有一个名为 XmlConverters 的库,可以将 EDI 转换为 XML,反之亦然。还有 CSV、JSON 和其他格式的转换器。这些库以 100% .net 托管代码和 100% Java 并行端口的形式提供。.net 端支持 XmlReader 和 XmlWriter,而 Java 端支持 SAX、StAX 和 DOM。两者都支持流和读取器/写入器 I/O。DataDirect 也有一个为将关系数据与 EDI 和 XML 合并而优化的 XQuery 引擎,但它仅适用于 Java。
Microsoft BizTalk Server在这方面做得很好。