smooks数据转换:edi to java
来源:互联网 发布:限制安装软件 编辑:程序博客网 时间:2024/05/17 22:33
- edi源文件内容:
HDR*1*0*59.97*64.92*4.95*Wed Nov 15 13:45:28 EST 2006
CUS*user1*Harry^Fletcher*SD
ORD*1*1*364*The 40-Year-Old Virgin*29.98
ORD*2*1*299*Pulp Fiction*29.99 - edi-to-java-mapping文件内容:
<?xml version="1.0" encoding="UTF-8"?>
<medi:edimap xmlns:medi="http://www.milyn.org/schema/edi-message-mapping-1.0.xsd">
<medi:description name="DVD Order" version="1.0" />
<medi:delimiters segment=" " field="*" component="^" sub-component="~" />
<medi:segments xmltag="Order">
<medi:segment segcode="HDR" xmltag="header">
<medi:field xmltag="order-id" />
<medi:field xmltag="status-code" />
<medi:field xmltag="net-amount" />
<medi:field xmltag="total-amount" />
<medi:field xmltag="tax" />
<medi:field xmltag="date" />
</medi:segment>
<medi:segment segcode="CUS" xmltag="customer-details">
<medi:field xmltag="username" />
<medi:field xmltag="name">
<medi:component xmltag="firstname" />
<medi:component xmltag="lastname" />
</medi:field>
<medi:field xmltag="state" />
</medi:segment>
<medi:segment segcode="ORD" xmltag="order-item" maxOccurs="-1">
<medi:field xmltag="position" />
<medi:field xmltag="quantity" />
<medi:field xmltag="product-id" />
<medi:field xmltag="title" />
<medi:field xmltag="price" />
</medi:segment>
</medi:segments>
</medi:edimap> - 建立java project ,import edi源文件及mapping文件,根据以上文件可建立java class分别为:Coustomer,Header,Order,OrderItem.在smooks的example文件里有源码。导入文件在src文件夹下,创建smooks文件,点击input task——>add——>browse workspace——>edi源文件——>确定。添加映射关系文件,mapping model处选择browse——>导入在project下的mapping xml文件。
- 右击input mask——>add tasking——>java mapping,在selected task details区右击——>add——>java class,依次添加相应的class并建立关系。如图所示:
- 测试并转换,建立main class。(在测试之前需将smooks/lib下所以的jar包导入,方法:右击project——>build path——>add axternal archives……——>……,导入完毕。)main源码如下:
import org.milyn.*;
import org.milyn.payload.JavaResult;
import org.milyn.container.*;
import org.milyn.event.report.*;
import org.milyn.io.*;
import org.xml.sax.*;
import javax.xml.transform.stream.*;
import java.io.*;
import java.util.*;
public class Main {
private static byte[] messageIn = readInputMessage();
private final Smooks smooks;
protected Main() throws IOException, SAXException {
// Instantiate Smooks with the config...
smooks = new Smooks("smooks-config.xml");
}
protected JavaResult runSmooksTransform(ExecutionContext executionContext) throws IOException, SAXException, SmooksException {
try {
Locale defaultLocale = Locale.getDefault();
Locale.setDefault(new Locale("en", "IE"));
org.milyn.payload.JavaResult javaResult = new org.milyn.payload.JavaResult();
// Configure the execution context to generate a report...
executionContext.setEventListener(new HtmlReportGenerator("target/report/report.html"));
// Filter the input message to the outputWriter, using the execution context...
smooks.filterSource(executionContext, new StreamSource(new ByteArrayInputStream(messageIn)), javaResult);
Locale.setDefault(defaultLocale);
return javaResult;
} finally {
smooks.close();
}
}
public static void main(String[] args) throws IOException, SAXException, SmooksException {
System.out.println("\n\n==============Message In==============");
System.out.println(new String(messageIn));
System.out.println("======================================\n");
pause("The EDI input stream can be seen above. Press 'enter' to see how this stream is transformed the Order Object graph...");
Main smooksMain = new Main();
ExecutionContext executionContext = smooksMain.smooks.createExecutionContext();
org.milyn.payload.JavaResult result = smooksMain.runSmooksTransform(executionContext);
System.out.println("\n==============EDI as Java Object Graph=============");
System.out.println(result.getBean("order"));
System.out.println("======================================\n\n");
pause("And that's it! Press 'enter' to finish...");
}
private static byte[] readInputMessage() {
try {
return StreamUtils.readStream(new FileInputStream("src/input-message.edi"));
} catch (IOException e) {
e.printStackTrace();
return "<no-message/>".getBytes();
}
}
private static void pause(String message) {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
System.out.print("> " + message);
in.readLine();
} catch (IOException e) {
}
System.out.println("\n");
}
public org.milyn.payload.JavaResult runSmooksTransform() throws IOException, SAXException {
ExecutionContext executionContext = smooks.createExecutionContext();
return runSmooksTransform(executionContext);
}
} - 运行main class,成功后在/target、文件夹下可查看生产的xml内容验证文件,看是否是达到预期效果。
- edi to java数据转换成功。
0 0
- smooks数据转换:edi to java
- Smooks:xml-to-java
- 使用 Smooks Eclipse 插件轻松完成 XML 到 Java 的数据转换
- 使用 Smooks Eclipse 插件轻松完成 XML 到 Java 的数据转换
- 使用 Smooks Eclipse 插件轻松完成 XML 到 Java 的数据转换
- 使用开源组件smooks解析非标准EDI报文
- EDI格式转换框架
- EDI电子数据交换
- SAP电子数据交换EDI
- edi
- EDI
- EDI?
- Mapgis to shp数据转换
- [EDI]EDI
- java数据转换error:java.math.BigDecimal cannot be cast to java.lang.Double
- EIP平台 开发文档-JPA实体使用SMOOKS转换导致记录数不正确问题记录
- Java的数据转换
- Java的数据转换
- 同步屏障CyclicBarrier
- 供应链系统的基础代码支持
- Balanced Binary Tree
- Codeforces Round #304 (Div. 2) C queue暴力
- F - Pasha and Stick
- smooks数据转换:edi to java
- PAT-B 1016. 部分A+B
- http和https
- 99乘法表
- SpringMVC工作原理解读
- MSP430 ADC12采样转换模式详解
- 43. Multiply Strings
- The method setValue(String) in the type ParamTag is not applicable for the arguments (long)
- G - New Year and Days