在smooks網站上可以看到它支持EDI生成。但是沒有辦法指定edi編寫器的配置(例如在模式http://www.milyn.org/xsd/smooks/edi-1.1.xsd中定義的讀者)。Smooks EDI作家
在某些論壇的一些舊帖子中,我看到smooks正在籌劃這樣的作家。是可用的麼?提前致謝。
在smooks網站上可以看到它支持EDI生成。但是沒有辦法指定edi編寫器的配置(例如在模式http://www.milyn.org/xsd/smooks/edi-1.1.xsd中定義的讀者)。Smooks EDI作家
在某些論壇的一些舊帖子中,我看到smooks正在籌劃這樣的作家。是可用的麼?提前致謝。
的Smooks可以讀寫比XML,包括EDI,CSV,JSON,YAML,Java的其他數據格式。要讀取非XML數據,通常需要爲該數據類型配置一個。編寫數據通常涉及配置一個模板,該模板對由(如XSLT)生成的事件流或BeanContext中的Bean(如FreeMarker的情況)生成的事件流進行操作。您也可以簡單地允許Smooks序列化輸入讀取器生成的事件流,這將生成XML,只需爲輸入源配置讀取器即可爲XML轉換提供有效的NNN。
所以,是的,有可能與Smooks產生EDI。
我能夠做到這一點使用的unedifact使用相同的模式:讀者
的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枝條readed的元素。現在,我已經OBJETS我可以做任何的修改之後,我使用文件交換工廠:前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填充的方式。 – morsor
您可以調試您的路由以瞭解是否填充了JavaResult。我認爲,如果你使用不同的導入至少有這些變化:D96AInterchangeFactory,UNEdifactInterchange41 – Panchitoboy
感謝您的答覆。我的完整代碼在這裏 - > http://stackoverflow.com/questions/31069450/smooks-outputting-edi-from-java我有一種感覺,我創建的示例Java對象沒有足夠的空間被識別爲EDI消息 – morsor
你能不能給一個例子,如何從java對象/ xml生成edi文件,因爲我是新來的smooks和缺乏文檔,我努力實現這一點。 – RCS
@RCS看看這裏:http://www.smooks.org/user-guide/user-guide.html#EDI – Vlad