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 之前,让我们先了解一下 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 对象的数据转换。
1.smooks选择器 其选择器就是作为一个简单的查找值开始进行工作,XPath表达式时从目标元素向后,而不是从跟元素向后。 2.XPath语法 text()用法 a/b[text()='abc'] a/b[text()=123] text()表达式之后不能再跟其他路径 只有在实现SAXVisitAfter接口的SAXVisitor实现中才支持“text()” @x用法 a/b[@id
Smooks是一种java的开源框架,可以进行edi to java、java to edi、xml to edi、edi to xml等等转换操作。 milyn-smooks-edi是milyn-smooks-all的一个子模块,处理edi和java之间的转换 1 <dependency> 2 <groupId>org.milyn</groupId> 3 <artifact
Smooks 1.2框架能够用于各种数据格式的转换: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
根据你的问题,我试图做一些研究。请检查它是否有助于您。 所以这里是要转换的源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 这
软件介绍 Smooks 是一款基于 LGPL 协议的开源 Java 框架,主要用于处理 XML 与 non-XML 格式 ( 包括 CSV,EDI,Java) 之间的转换。Smooks 于 2008 年 5 月发布 v1.0,目前最新的版本已是 v1.3.1。正如 Smooks 开发人员所言,“Smooks …让操作 XML, EDI,XML,CSV 变得更简单”。 实际上,我们通常将 Smook
在smooks网站上可以看到它支持EDI生成.但是没有办法为edi writer指定配置(如在schema http://www.milyn.org/xsd/smooks/edi-1.1.xsd中定义的reader的情况). 在某些论坛的一些旧帖中,我看到smooks正计划这样一个作家.是可用的么?提前致谢. 解决方法: 我设法使用unedifact中使用的相同模式执行此操作:reader Smo
在使用smooks报文转换时,new smooks通过了,但是在filterSource时报错(报错信息见下方)。错误信息 Premature end of file 说明文件未正确结束。解决思路是分别对smooks-config.xml 、输入数据、输出数据进行分析。new smooks 通过 说明smooks-config.xml基本没问题;在对输入数据分析时发现数据xml数据只有xm
smooks集成在了mule ESB中,在做xml to xml数据转换时报错Error invoking @Initialize method 'initialize' on class 'org.milyn.smooks.scripting.groovy.GroovyContentHandlerFactory'. : org.milyn.cdr.SmooksConfigurationExce
package com.edi; import java.io.*; import java.util.List; import java.util.Locale; import javax.xml.transform.stream.StreamSource; import org.milyn.ReaderConfigurator; import org.milyn.Smooks; impo
Smooks作用: 1)执行大量的数据转换:XML到XML,CSV到XML,EDI到XML,XML到EDI,XML到CSV,Java到XML,Java到EDI,Java到CSV,Java到Java,XML到Java,EDI到Java 等等。 2)从数据源(CSV,EDI,XML,Java等)增加Java对象模型。 3)支持虚拟对象模型(Virtual Object Model,它是Map或L
XML输入文件: XML输入文件转换为XML输出文件。将XML输入文件的firstName、middleName和lastName标签合并为XML Ouput文件的name标签,将XML输入文件的address1、address2、city、state和pincode标签合并为XML Ouput文件的address标签。 我几乎转换了代码,但我在这里与empId作斗争。我已经在XSLT文件中手动输
问题内容: 什么是转换不同的方法来,我知道有一个选项,但想知道是什么其他可用于相同? 注意: 我没有进一步的要求,因此我不能在这个问题上添加更多内容,但是在此时,如果我能知道有哪些不同的方法可用于转换,那将非常棒。 更新: 建议的不同方法是: javax.xml.bind.Marshaller和javax.xml.bind.Unmarshaller XStream的 XMLBean jaxb ca
问题内容: 有人知道将SGML转换为XML的方法或库吗? 编辑:为澄清起见,我必须在Java中进行转换,并且无法使用SP解析器或相关的SX工具。 问题答案: 似乎普遍的共识是,没有可用的Java进行SGML工作的库。毫无疑问,经过几天无能为力的搜索Google并在这里提出这个问题之后,我没有找到有关此主题的资源。
问题内容: 我有一些需要用XML迷惑的HTML文件。我们正在使用这些HTML为应用程序提供内容,但是现在我们必须以XML形式提供这些内容。 HTML文件包含,表格,div,图像,p,b或强标签等。 我用谷歌搜索并找到了一些应用程序,但是我还无法实现。 您能否建议一种将这些文件内容转换为XML的方法? 问题答案: 我成功使用了命令行实用程序。在Linux上,我使用迅速安装了它。然后命令: 给了一个x
问题内容: 我试图将JSON输出转换为XML。不幸的是我得到这个错误: JSON根对象具有多个属性。根对象必须具有单个属性才能创建有效的XML文档。考虑指定DeserializeRootElementName。 这就是我到目前为止所创建的。 这是我的JSON输出: 我怎么解决这个问题? 问题答案: 尽管问题中提供的JSON并不完整,但您在顶层具有多个属性,如异常所示。您必须为其定义根以获取有效的X
所以我试图转换一个. xml数据源: 转换成. csv但以这种格式格式化 我有重复的元素,比如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列。 我发现了一个工具,我相信它确实可以做到这一点,但我不知道如何设置它 我有两个文件——a。蝙蝠和。罐子在内部。bat我们有以下默认代码: 我不知道该怎么修改这个。有谁能提供一些建议吗?
在endElement中使用Sax转换数据 在debug中,当我在处理程序中的characters方法中读取它时,已经转换了与数,并且数据被截断了。 我见过很多关于这个的问题,但从来没有解决办法。有什么想法吗?
我想将xml文件格式转换为另一种格式;使用XSL1.0或2.0版。 http://www.w3.org/1999/xsl/transform“version=”1.0“> 这段代码是从“struct”节点的“members”属性中提取相关ID的起点,以后只用于发出“field”节点。 xslt处理器需要解析Struct节点的'members'属性。“members”属性是字段ID的列表。 在上面的