我们正在寻找一个可以读取任何输入的转换库或引擎(EDIfact文件,CSV,XML等等。所以包含必须转换为已知业务对象结构的数据的文件(或webservices结果) 。)应使用自定义规则将此数据转换为现有业务对象。 XSLT既复杂(学习)又简单(功能不够)
有人可以推荐一个C#库或引擎吗?我见过Altova MapForce,但是我希望能向几十个人发送一些建造/设计他们自己的转换而无需支付几十个Altova许可证的人。
答案 0 :(得分:3)
如果您认为XSLT对您来说太难了,我想您可以尝试使用LINQ to XML来解析XML文件。它集成在.NET框架中,您可以使用C#(或者,如果您使用VB.NET 9.0,更好的是因为XML文字)而不是学习另一种语言。您可以毫不费力地将它与现有应用程序集成,而且不会出现XSLT中语言和文件管理之间的范例不匹配。
当然,它不是用于解析文件的框架或库,但是XSLT都不是,所以......
答案 1 :(得分:2)
XSLT不适用于EDI和CSV。如果你想要一个完全通用的转换引擎,你可能需要支付一些现金。我使用Symphonia来处理EDI,但是它有效,但它不是免费的。
问题在于你所描述的声音“企业化”(我确信没有人使用EDI来获取乐趣),所以没有开源/免费工具来处理这些东西。
答案 2 :(得分:1)
我不会那么快地将XSLT视为过于复杂或不包含您需要的功能。
有很多书籍/网站描述了您需要了解的有关XSLT的所有内容。是的,有一点学习曲线,但进入它并不需要太多,如果你需要帮助,总会有像stackoverflow这样的好社区; - )
至于缺少功能,你总是可以使用xslt扩展xslt并从xslt调用.NET程序集 XsltArgumentList.AddExtensionObject()方法,它可以为您提供所需的功能。
MSDN有一个使用此here
的好例子MapForce和Biztalk应用程序确实非常容易创建xslt,但它们也需要花费一些成本。此外,根据您的用户群(假设非开发人员),我认为您会发现这些应用程序有自己的学习曲线,并且通常功能丰富,无法满足您的需求。
我建议您考虑根据用户需求构建和分发自己的自定义地图工具。
此外,如果您需要一个库来协助文件转换,我建议您在SourceForge上使用FileHelpers
答案 3 :(得分:1)
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。
答案 4 :(得分:0)