Java Smooks EDI编写器

Java Smooks EDI编写器,java,edi,smooks,Java,Edi,Smooks,从smooks网站可以看出,它支持EDI生成。但无法指定edi编写器的配置(如模式中定义的读取器) 在某些论坛的一些老帖子中,我看到smooks正在计划这样一位作家。有空吗?提前感谢。根据: Smooks可以读取和写入XML以外的数据格式,包括EDI、CSV、JSON、YAML和Java。要读取非XML数据,通常需要为该数据类型配置。写入数据通常涉及配置一个模板,该模板对由生成的事件流(如XSLT)或BeanContext中的bean(如FreeMarker)进行操作。您还可以简单地允许Smoo

从smooks网站可以看出,它支持EDI生成。但无法指定edi编写器的配置(如模式中定义的读取器)

在某些论坛的一些老帖子中,我看到smooks正在计划这样一位作家。有空吗?提前感谢。

根据:

Smooks可以读取和写入XML以外的数据格式,包括EDI、CSV、JSON、YAML和Java。要读取非XML数据,通常需要为该数据类型配置。写入数据通常涉及配置一个模板,该模板对由生成的事件流(如XSLT)或BeanContext中的bean(如FreeMarker)进行操作。您还可以简单地允许Smook序列化输入读取器生成的事件流,这将生成XML,通过简单地为输入源配置读取器,提供有效的NNN到XML转换


因此,是的,有可能使用Smooks生成EDI。

我使用了与unedifact:reader中使用的相同模式来实现这一点

Smooks配置:

<?xml version="1.0"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
                      xmlns:core="http://www.milyn.org/xsd/smooks/smooks-core-1.4.xsd">
    <import file="/org/milyn/edi/unedifact/d96a/message-bindingconfig.xml" />
    <import file="/org/milyn/smooks/edi/unedifact/model/r41/bindings/unedifact-interchange.xml" />
    <core:exports>
        <core:result type="org.milyn.payload.JavaResult"/>
    </core:exports>
</smooks-resource-list>
最后,我可以使用toString()获取我的文档:

System.out.println("document: " + ediOutStream.toString());

我正在尝试使用您的解决方案输出EDI,但ediOutStream为空。我的Smooks配置与您的类似(除了导入D98a),因此问题可能在于我的JavaResult的填充方式。您可以调试路由以了解JavaResult是否已填充。我认为,如果您使用不同的导入,至少会有以下更改:D96AInterchangeFactory,Unedifact41谢谢您的回复。我的完整代码在这里->我感觉我创建的示例Java对象没有填充到足以识别为EDI消息的程度。如何准备用于获取unEdifactInterchange对象的map对象。我在该项目中使用了apache camel。所以它的对象是由框架填充的。但我相信您可以创建UNEdifactInterchange41的实例,并添加所需的所有信息。您可以给出一个示例,如何从java object/xml生成edi文件吗?由于我对smooks不熟悉,并且缺乏文档,我正在努力实现这一点。@RCS请看这里:
System.out.println("document: " + ediOutStream.toString());