在smooks网站上可以看到它支持EDI生成。但是没有办法为edi writer指定配置(如在模式http://www.milyn.org/xsd/smooks/edi-1.1.xsd中定义的reader的情况)。
在某些论坛的一些旧帖中,我看到smooks正计划这样一个作家。是可用的么?提前谢谢。
答案 0 :(得分:4)
我设法使用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。现在我有objets我可以进行任何修改,然后我使用文档交换工厂: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());
答案 1 :(得分:0)
Smooks可以读写除XML以外的数据格式,包括EDI,CSV,JSON,YAML,Java。要读取非XML数据,通常需要为该数据类型配置a。编写数据通常涉及配置一个模板,该模板对由(在XSLT的情况下)生成的事件流进行操作,或者在BeanContext中的bean上进行操作(如FreeMarker的情况)。您还可以简单地允许Smooks序列化输入读取器生成的事件流,这将生成XML,通过简单地为输入源配置读取器,为XML转换提供有效的NNN。
所以,是的,有可能用Smooks生成EDI。