问题标签 [smooks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
886 浏览

wso2 - 使用 wso2 进行 XML 到 XML 的转换

我正在使用 wso2 esb 4.8.1。我正在尝试在 smooks 调解器的帮助下进行 xml 到 xml 的转换,但是当来自 wso2 的应用程序部署控制台的 try it 命中请求时,我得到以下异常,

seqence xml如下,

下面是smooks的配置文件,

我对代理服务的请求如附图所示。

在此处输入图像描述

0 投票
1 回答
886 浏览

java - 如何在 smooks 中定义 ISA-Segment?

我在 smooks 的帮助下在 java 程序中创建 ANSI.X12 消息。我正在使用 xml 文件(使用它们的http://www.milyn.org/schema/edi-message-mapping-1.2.xsd)自己定义 X12 消息。其中大部分都运行良好,但我确实对 ISA 段有疑问。我将其定义为:

只要我插入正确长度的字符串,这主要是可用的。问题在于组件分隔符(^在这种情况下)。ISA 段定义了哪些字符是用于分隔段、元素等的特殊字符。当我将"^"值放入ComponentElementSeparator时,它会转义(当然),因为它是一个特殊的字符,并且 smooks 不知道我的 ISA 段是特殊的ISA段。

我明白了

它应该在哪里

(注意?在末尾的^)。

到目前为止,我得到的唯一解决方法是将一些不同的字符放入medi:delimiters诸如<medi:delimiters segment="&#10;" field="*" component="&lt;" sub-component="~" escape="?" />,但是一旦该字符出现在某个地方的数据中,这势必会产生问题。这特别令人沮丧,因为消息甚至不使用任何必须分离的组件。

我在 smooks 的文档中找不到任何相关信息,但必须有某种方法可以做到这一点。毕竟,X12 是我所知道的两个原因之一,任何人都会首先使用 smooks(另一个是 EDIFACT)。

任何人都知道将 ISA 插入到我的 smooks 消息描述中的正确方法吗?

0 投票
1 回答
506 浏览

xml - edimap 文件的外观如何?Smooks 没有找到任何字段

我正在使用 Smooks 1.5 并尝试从 EDI 消息生成 XML 文件,我也尝试使用标准插件,它生成大量命名空间,我无法处理 FreeMaker 模板引擎的原因。这个例子没有 FreeMaker-Engine。

我有一个 REMADV 消息(格式 D.01B),如下所示:

我的问题是,我必须如何设置映射文件?我需要指定每一行还是只指定我感兴趣的字段就足够了?

我的映射文件:

-->

smooks 配置如下所示:

错误消息始终相同:

看起来它没有找到任何匹配项有人知道为什么我在 EDI 消息中找不到任何字段吗?

雷托

0 投票
1 回答
1303 浏览

xml - wso2 esb 将 un/edifact 96a EDI 转换为 XML

我几乎没有从 WSO2 ESB 开始,需要创建一个方案,允许我从通过 VFS(已启用)获得的 .edi 文件(96a)将其转换为 XML ......为此,我正在使用 Smooks 和UN / EDIFACT 执行解析。执行时会出现以下错误 WSO2:

Smooks的配置是:

我在 Java 应用程序中使用过同样的配置,而且我工作得很好。

此外,除了创建 CLASSPATH 甚至 build-classpath-directory 命令之外,我还尝试在 WSO2 中的 dropins 和 lib 目录中手动添加依赖项,但没有成功。

0 投票
1 回答
313 浏览

smooks - 使用 smooks 逐行读取平面文件

我有一个平面文件作为输入。我需要使用 Smooks 逐行读取平面文件。谁能给我建议或示例代码如何做到这一点。

0 投票
1 回答
295 浏览

wso2 - WSO2 没有从 Smooks 中捕获异常

我正在使用 WSO2 ESB 4.8.1,我正在使用 Smooks 1.5 读取固定长度的文件,然后将其解析为原始 XML。它工作正常,但我还必须实现它的特殊流程。

问题:

问题是,如果我弄乱了 smooks 配置文件,它会引发异常,但它没有被 WSO2 捕获。对于所有其他错误和异常,WSO2 启动故障序列,您可以获得 ERROR_MESSAGE、ERROR_DETAIL 属性,但在这种情况下,它只是终止流程并且服务不会进入故障序列。因此,除非服务进入故障序列,否则我无能为力。

示例文件:

我用来创建异常的 Smooks-config 文件:

wso2 日志文件中的异常:

注意: Smooks 给出了正确的异常,但我不明白为什么 WSO2 esb 服务没有进入故障序列并刚刚终止......?这是smooks的一些行为吗..?

0 投票
1 回答
523 浏览

java - 使用 Smooks 或其他方法按元素拆分 XML 文件

我正在尝试做一些我认为是基本任务的事情。

我追求一个简单而整洁的Java 解决方案,它可以按元素拆分 XML 内容。我不想将整个内容加载到内存中(即我想流式传输元素),我想掌握每个元素的字符串表示形式,以便将其发送到我想要的任何地方。

我使用 StAX的明显不成功的拉解析尝试:

我也尝试过Smooks,但没有成功。特别是,此处提供的示例http://www.smooks.org/mediawiki/index.php?title=V1.4:Smooks_v1.4_User_Guide#Basic_Splitting_and_Routing并没有提供获取字符串 XML 的简洁方法元素。如果您想将 XML 元素发送到文件、数据库或 JMS 队列,这一切都很容易和顺利……但如果我想接触 String XML,那就不行了。

我非常沮丧,我开始认为编写自己的基于 SAX 的解决方案可能会更省力。谁能证明我错了?

0 投票
0 回答
102 浏览

windows - Smooks 在 Windows 中被 Java 锁定的 JAR

我目前在 Mule ESB 中使用自定义的 Smooks 变压器。此转换器使用的一些类在应用程序关闭时保留在内存中(org.milyn.cdr.SmooksResourceConfiguration、org.milyn.xml.Namespace$SmooksNamespaceMappings)。类所属的 jar 被锁定(milyn-smooks-core-1.5.2.jar),并且在取消部署时,该 jar 不会被 mule 删除(这只发生在 Windows 中)。

我尝试使用 spring destroy 方法来清理 Smooks 对象,并且我还尝试在启动时将 smooks 对象放在注册表中并删除,但都没有解决问题。

唯一有效的解决方法是在 ${MULE_HOME}/lib/user 文件夹中复制与 smooks 相关的 jar(milyn-commons、milyn-smooks-core、milyn-smooks-template)。

这里的问题似乎与 Smooks 而不是 Mule 有关。也许 Smooks 是默认缓存对象还是不是流?

对此的任何帮助将不胜感激。

0 投票
2 回答
763 浏览

groovy - 使用 Smooks 或 Groovy 和 Java Camel 来拆分/转换 XML

Camel 版本 2.14 Smooks 版本 1.5.1

我收到一条消息,我想拆分和转换,但我需要父级的id。所以我考虑使用 Smooks,拆分消息,转换并将每个输出发送到队列。它将使用 freemarker 模板进行转换。

有很多例子。但是例如骆驼示例不起作用,因为“java.lang.ClassNotFoundException:org.apache.camel.component.ResourceBasedComponent”是一个已知问题。

另一种方法是使用groovy进行转换?

那么,如何解决这个最简单的问题呢?

0 投票
1 回答
131 浏览

java - 当记录中遇到双引号时,Smooks 无法返回逗号分隔值

我有一个 CSV 文件,我在 smooksConfig 文件中指定“逗号”作为分隔符。但是,只要其中一个值有双引号(例如 21 英寸电视,10 英寸屏幕),如果我的记录中没有双引号,smooks 就无法检索值,smooks 工作得很好。

谢谢。