编程之家(jb51.cc)编程百科栏目主要推荐程序员常用编程技术介绍,以下是程序开发相关编程语言,主要信息提供给程序员快速了解所需要学习的编程技术语言。

Smooks Java的XML转换框架

程序名称:Smooks

授权协议: LGPL

操作系统: 跨平台

开发语言: Java

Smooks 介绍

Smooks 是一款基于 LGPL 协议的开源 Java 框架,主要用于处理 XML 与 non-XML 格式 ( 包括 CSV,EDI,Java)
间的转换。Smooks 于 2008 年 5 月发布 v1.0,目前最新的版本已是 v1.3.1。正如 Smooks 开发人员所言,“Smooks
…让操作 XML, EDI,XML,CSV 变得更简单”。

实际上,我们通常将 Smooks 看做是一个 XML 到 non-XML 格式的“数据转换引擎”,然而在 Smooks 的核心实现中,本质上是为 XML,
CSV, EDI 和 Java 等数据源提供一个事件流(Event
Stream),对数据源的处理其实可以看做是针对此输入数据流的一个个逻辑事件处理。因此,Smooks
的核心其实是一个结构化数据事件流处理器”。在这样的设计中,开发人员可以用以下两种模式使用 Smooks:

  • 开发人员可以编写自己的逻辑事件处理器,用于定制化处理一个数据源事件流中的特定事件;
  • 开发人员也可以直接使用 Smooks 发行版中提供解决方案(out-of-Box solutions )。在这种模式下,开发人员只需重用别人创建的组件并重新配置它们来对数据源进行处理。例如,通过使用 Smooks 提供的组件便可完成从 XML 到 Java 对象的转换(正如本文下面将会展示的一样)

因此,在开始使用 Smooks 之前,让我们先了解一下 Smooks 发行版中已经提供了哪些数据转换功能。在 Smooks 的发行版中,主要包含了 4
大类也已实现的 XML 和 non-XML 数据转换组件 ,分别为:

Java 绑定 (Java binding)

Smooks 支持从多种数据源生成 Java 对象,包括从 CSV, EDI, XML 或 Java 等(如图 1 所示)。生成的 Java
对象既可以作为数据转换的结果进行使用,也可以成为另一个数据转的输入。

图 1. Smooks Java 绑定

数据格式转换(transformation )

Smooks 支持多种数据格式间的转换,包括:XML > XML, CSV > XML, EDI > XML, XML > EDI, XML > CSV,
Java > XML, Java > EDI, Java > CSV, Java > Java, XML > Java, EDI > Java 等(图 2
)。

图 2. Smooks 数据转换

海量数据处理(Huge Message Processing )

Smooks 能够支持对海量数据(GB 量级)的处理,例如拆分 (Split),转换 (transform) 海量数据至数据分片 (message
fragment) 以及路由 (Route) 这些数据分片至文件数据库或者 JMS(Java Message Service)。

图 3. Smooks 海量数据处理

数据信息补充(Message Enrichment )

Smooks
可以利用数据库或者其他数据源,添加额外的信息至输入的数据中。例如在网络购物应用中可以将用户的偏好(preference)从数据库添加用户订单
中,以便为后续业务流程提供更多信息。

图 4. Smooks 数据信息补充

提供了如此丰富的 XML 和 non-XML 数据转换功能的同时,Smooks 同时还提供了 Eclipse Smooks 插件方便开发人员在
Eclipse 集成开发环境中开发和测试基于 Smooks 的数据转换应用 [7]。接下来,本文将以 Java 绑定 为例,结合 Smooks
Eclipse 插件,较为详细的介绍如何在 Eclipse 中轻松完成设计、配置和测试基于 Smooks 的 XML 到 Java 对象的数据转换。

Smooks 官网

http://www.smooks.org/

编程语言

BlazeDS 是一个基于服务器的Java 远程控制(remoting)和Web消息传递(messaging)技术, 它能够使得后端的Java应用程序和运行在浏览器上的Adobe
OVal 是一个可扩展的Java对象数据验证框架,验证的规则可以通过配置文件、Annotation、POJOs 进行设定。可以使用纯 Java
OpenDDS 是一个开源的 C++ 实现的 对象管理组织 OMG 的 数据分布式服务 (DDS) 。OpenDDS利用自适应通信环境(ACE)提供一个跨平台的环境。
JADE (Java Agent DEvelopment Framework) 是一个完全用Java语言实现的软件框架。它通过一个兼容 FIPA
WebRTC 是一项在浏览器内部进行实时视频和音频通信的技术,是谷歌于2010年以6820万美元收购VoIP软件开发商 Global IT
gwtwiki - The Java Wikipedia API (Bliki engine),是一个 Wikipedia/Mediawiki 语法解析器,可以把 wiki 的文本转换成 HTML。它支持 wiki 标签,例如 bold, italic, headers, nowiki,
LuaTinker 的作者是Kwon-il Lee韩国人写的,最新的版本是0.2.C,这个C++ wrapper For Lua能够方便和
各种语言环境下gitignore文件的一个集合。