我正在寻找一个能够进行 Java to EDI 转换的Java库 -
更具体地说,医疗保健中使用的 EDI 835 格式。
虽然很多图书馆承诺 Java to EDI 转换,但是没有
在其网站上提供相同的文档或代码示例。
这是我到目前为止没有运气的图书馆清单:
1. EdiReader (EdiWriter是商业版,没有试用版下载)。
2. Smooks (没有试用版下载和文档没有提到Java到EDI的转换)
3. Open Business Objects - 来自americancoders.com的OBOE(试用版下载但未提及Java到EDI)。
4. Oakland data transformer (这甚至不让我下载图书馆和文档)。
有谁知道其他可能有用的解决方案?
我也对任何商业解决方案持开放态度。
谢谢!
答案 0 :(得分:5)
如果您对商业解决方案持开放态度,您可能需要查看Altova的MapForce。它有一个拖放映射器,您可以创建地图,然后生成插入应用程序的代码。 MapForce
“Java to EDI”似乎是一个流行的用词不当。在您的情况下,您将从源数据(RDBMS,XML,平面文件,iDoc等)创建标准化文本文档(在本例中为835 EDI文档)。 Java是渠道 。您基本上是通过编写自己的翻译器/解析器来重新发明一个30岁以上的轮子,这通常没有EDI语法检查/ FA协调/强大的合作伙伴工具的好处。如果我想停止那种疯狂,我会看Liaison及其工具,特别是ECS和Delta。这些工具是基于Windows的,因此可能不是一种选择,但对于可以轻松与您的架构集成的廉价商业工具,您的投资回报率很快就会显现出来。
答案 1 :(得分:1)
I agree that there are very few open source libraries in the market which can help on EDI to xml conversion. Many of them have not been updated for years. I visited the "Smooks" site and it seems, that the project has been discontinued.
If you are okay with paying for a solution, you may give EDI parser from Progress a try.
It comes with a free trial version for 15 days and the apis are very easy to use and integrate in your project.
It does not only support EDI to xml conversion, but also EDI to CSV conversion (you have the option to decide the delimiter).
答案 2 :(得分:0)
smooks的试用版下载?!你不需要许可证。 Theres也是一个很好的文档。看看:http://www.smooks.org/
恕我直言,如果你不想要商业解决方案,我会和你一起去。
答案 3 :(得分:0)
开源Java EDI API不多。但是,仍然有一些你提供的。
我也搜过很多。
Smook 需要一些XML配置来读取特定的EDI文件。
然后我尝试了 EDI阅读器。实际上EDI阅读器可以从互联网上下载。
对我而言,它是唯一帮助我将一个EDI文件转换为XML的人。即使生成的XML也有些复杂。但是您可以使用任何其他API来解析XML。 以下是EDI Reader的下载链接。
Read about EDI Reader, and for example programs, downloads.
这是一个ZIP文件,包含JAR文件和一些示例JAVA代码
答案 4 :(得分:0)
如果您正在考虑使用Smooks实施解决方案,我只需要参考一些来自Smooks'的有用信息。文档:
Java to Text(XML,CSV,EDI等)
如本指南的其他部分所述,Smooks核心运行时工作正常 通过处理由输入源生成的SAX事件流 某种类型(XML,EDI,Java等)并使用这些事件来触发 访客逻辑。对于Java源代码(请参阅上一节) " Java to Java"),Smooks使用XStream生成这个SAX流 事件
但是,有时候,您只想申请一个模板(例如 FreeMarker模板)到Java Source对象模型并生成XML, CSV,EDI等。您不希望招致浪费的开销 生成您不会使用的SAX事件流。去做 这个,你需要告诉Smooks核心运行时不要生成 事件流。这可以通过两种方式之一完成。
通过在JavaSource实例上调用setEventStreamRequired(false) 被提供给Smooks.filterSource:
JavaSource javaSource = new JavaSource(orderBean);
// Turn streaming off via the JavaSource...
javaSource.setEventStreamRequired(false);
smooks.filterSource(javaSource, result);
或者,通过关闭 " http://www.smooks.org/sax/features/generate-java-event-stream" Smooks配置中的功能:
<reader>
<features>
<setOff feature="http://www.smooks.org/sax/features/generate-java-event-stream" />
</features>
</reader>
<!-- Other Smooks configurations e.g. a FreeMarker template... -->
应用FreeMarker模板时,模板的名称 上下文bean(即模板中使用的名称)取决于 JavaSource中的对象类型:
如果对象是Map,那么Map实例将成为模板 上下文,因此您可以使用Map条目键作为bean名称 在你的模板中。对于非Map对象,JavaSource类采用 Object Class SimpleName并从中创建JavaBean属性名称。 这是用于模板的上下文bean的名称。因此,如果 bean类名是com.acme.Order,然后是上下文bean名 模板化的目的,将是&#34;命令&#34;。