在 smooks 网站上可以看到它支持 EDI 生成。但是没有办法为 edi writer 指定配置(就像在 schema http://www.milyn.org/xsd/smooks/edi-1.1.xsd中定义的 reader 的情况一样)。
在某些论坛的一些旧帖子中,我看到smooks正在筹划这样的作家。是可用的么?提前致谢。
在 smooks 网站上可以看到它支持 EDI 生成。但是没有办法为 edi writer 指定配置(就像在 schema http://www.milyn.org/xsd/smooks/edi-1.1.xsd中定义的 reader 的情况一样)。
在某些论坛的一些旧帖子中,我看到smooks正在筹划这样的作家。是可用的么?提前致谢。
我设法使用 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());
根据Smooks 网站:
Smooks 可以读写 XML 以外的数据格式,包括 EDI、CSV、JSON、YAML、Java。要读取非 XML 数据,您通常需要为该数据类型配置一个。写入数据通常涉及配置一个模板,该模板在由 (如 XSLT 的情况)或 BeanContext 中的 bean(如 FreeMarker 的情况)产生的事件流上运行。您还可以简单地允许 Smooks 序列化输入阅读器产生的事件流,这将产生 XML,通过简单地为输入源配置阅读器来提供有效的 NNN 到 XML 转换。
所以,是的,有可能使用 Smooks 生成 EDI。