是否有使用.NET的转换引擎或者库?

时间:2020-03-05 18:53:13  来源:igfitidea点击:

我们正在寻找可以读取任何输入(EDIfact文件,CSV,XML之类的东西。因此文件(或者Web服务结果)包含必须转换为已知业务对象结构的数据)的转换库或者引擎。应该使用自定义规则将数据转换为现有业务对象。 XSLT既要复杂(要学习)又要简单(功能不足)

有人可以推荐Clibrary或者引擎吗?我已经看过Altova MapForce,但是希望我可以向数十个人发送一些东西,这些人将构建/设计自己的转换而无需支付数十Altova许可。

解决方案

回答

Microsoft BizTalk Server在这方面做得很好。

回答

我不会因为太复杂或者没有包含所需功能而很快拒绝XSLT。

有很多书籍/网站描述了我们需要了解的有关XSLT的所有信息。是的,这里有一些学习曲线,但是并不需要花很多时间,而且如果需要帮助,总会有一个很棒的社区,例如stackoverflow可以寻求帮助;-)

由于缺乏功能,我们始终可以扩展xslt并使用以下命令从xslt调用.NET程序集:
XsltArgumentList.AddExtensionObject()方法,它将为我们提供所需的功能。

MSDN有一个很好的例子在这里使用

确实,MapForce和Biztalk应用程序使创建xslt非常容易,但它们也需要花费一些钱。另外,根据用户群(假设是非开发人员),我认为我们会发现这些应用程序具有自己的学习曲线,并且功能往往过于丰富,无法满足需求。

我建议我们考虑针对用户需求构建和分发自己的自定义映射工具。

另外,如果我们需要一个库来协助文件转换,我建议在SourceForge上使用FileHelpers

回答

如果我们认为XSLT对我们来说太难了,我认为我们可以尝试使用LINQ to XML来解析XML文件。它集成在.NET框架中,我们可以使用C(或者,如果使用VB.NET 9.0,则最好使用XML,因为使用XML文字),而不是学习其他语言。我们可以轻松地将其与现有应用程序集成,并且无需担心语言与XSLT发生的文件管理之间的范式不匹配。

Microsoft LINQ转XML

当然,它不是解析文件的框架或者库,但是XSLT都不是,所以...

回答

XSLT不适用于EDI和CSV。如果我们想要一个完全通用的转换引擎,则可能需要花一些钱。我已经使用Symphonia来处理EDI,它可以工作,但是它不是免费的。

问题是我们所描述的问题听起来很"有趣"(我确定没有人会用EDI来娱乐),因此没有开源/免费的工具来处理这些东西。

回答

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还具有经过优化的XQuery引擎,用于将关系数据与EDI和XML合并,但是它仅是Java。