4

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

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

4

2 回答 2

4

我设法使用 unedifact:reader 中使用的相同模式来做到这一点

烟雾配置:

<?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());
于 2015-03-03T14:24:52.923 回答
0

根据Smooks 网站

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

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

于 2014-03-10T17:08:08.150 回答