Smooks是一个用于处理XML与非XML(CSV,EDI,Java等)的Java框架与引擎。它常常被认为是一个转换框架并以此被用于好几个产品和项目中,包括JBoss ESB(以及其它ESB)。Smooks能够用于各种数据格式的转换:XML to XML,CSV to XML,EDI to XML,XML to EDI,XML to CSV,Java to XML,Java to EDI,Java to CSV,Java to Java,XML to Java,EDI to Java等。
不久前,Smooks 1.2版本发布了,这次添加了许多有趣的新功能:
EDIFACT Java 编译器(EJC):EJC大大的简化了绑定EDI数据到Java object graph,EJC类似于JAXBs XJC。
支持实体持久性框架:重利用你的实体持久性资源(如Hibernate, iBATIS 火任何JPA兼容的资源)坚持和丰富任何格式的messages。访问一个数据库,使用它的查询语言,或CRUD方法 ,来读出/写入数据库。
验证:支持Data Field level验证,使用正则表达式,或Business Rule compliance验证,使用MVEL表达式。
简易的CSV处理:使用简易的XML配置,在几分钟之内即可绑定CVS记录到java 对象,或者使用一个更简单的programmatic API。
改进Programmatic API:Smooks 1.2之前的版本,programmatic配置不是Smooks的强项,但是在1.2版本中已经取得了重大的改进。许多Smooks的功能都可以通过java被利用,不需要编写XML。
使用Smooks的方式有两种,你可以使用其中之一或结合使用它们:
模式一:你可以完全投入到Smooks中,编写你自己的定制访问者逻辑事件处理器,将其用于处理一个数据源事件流中特定事件。使用这一模式,你必须熟悉核心的API。
模式二:你可以重用由Smooks发行版提供的开箱即用解决方案,其数目正在不断的增长中。在这种模式下,你只需要重用别人创建的组件即可,重新配置它们来处理你的数据源,例如,通过配置一些参数就可以由EDI数据源生成Java对象模型。