【问题标题】:Smooks EDI writerSmooks EDI 作家
【发布时间】:2012-09-29 10:52:09
【问题描述】:

在 smooks 网站上可以看到它支持 EDI 生成。但是没有办法为 edi writer 指定配置(就像在架构 http://www.milyn.org/xsd/smooks/edi-1.1.xsd 中定义的 reader 的情况一样)。

在某些论坛的一些旧帖子中,我看到smooks正在筹划这样的作家。是可用的么?提前致谢。

【问题讨论】:

    标签: java edi smooks


    【解决方案1】:

    我设法使用与 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>
    

    结果是一个已读取元素的 HashMap。现在我有了对象,我可以进行任何修改,之后我使用文档交换工厂:ex D96AInterchangeFactory

    D96AInterchangeFactory factory = D96AInterchangeFactory.getInstance();
    UNEdifactInterchange41 unEdifactInterchange = (UNEdifactInterchange41) map.get("unEdifactInterchange");
    StringWriter ediOutStream = new StringWriter();
    factory.toUNEdifact(unEdifactInterchange, ediOutStream);
    

    我终于可以使用 toString() 来获取我的文档了:

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

    【讨论】:

    • 我正在尝试使用您的解决方案输出 EDI,但 ediOutStream 为空。我的 Smooks 配置和你的一样(除了我导入 D98a),所以问题可能是我的 JavaResult 的填充方式。
    • 您可以调试您的路由以了解 JavaResult 是否已填充。我认为,如果您使用不同的导入,至少会有这些变化:D96AInterchangeFactory, UNEdifactInterchange41
    • 感谢您的回复。我的完整代码在这里 -> stackoverflow.com/questions/31069450/… 我感觉我创建的示例 Java 对象没有填充到足以被识别为 EDI 消息
    • 如何准备您一直用来获取 unEdifactInterchange 对象的地图对象。
    • 我在那个项目中使用了 apache camel。所以它被框架填充的对象。但我确信您可以创建 UNEdifactInterchange41 的实例并添加您需要的所有信息
    【解决方案2】:

    根据Smooks website

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

    所以,是的,有可能使用 Smooks 生成 EDI。

    【讨论】:

    • 你能举个例子,如何从 java 对象/xml 生成 edi 文件,因为我是 smooks 的新手并且缺乏文档,我正在努力实现这一点。
    猜你喜欢
    • 2015-09-13
    • 2014-09-20
    • 2012-03-14
    • 2018-02-10
    • 2012-03-04
    • 2012-03-04
    • 2017-06-26
    • 2016-09-16
    • 1970-01-01
    相关资源
    最近更新 更多