问题标签 [bean-io]

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 投票
2 回答
1200 浏览

utf-8 - BeanIO 中的段终止符

我对 BeanIO 的 recordTerminator 解析器属性感兴趣。它是否也适用于细分,例如“segmentTerminator”?即,我有一个固定长度格式的流,包含一条带有可重复段的记录,并且所有流都是一行。因此,我设置了 recordTerminator="",但它仍然给了我

它不会抱怨可重复段之前的字段,并且对可重复段中的字段的抱怨是在 mapping.xml 中定义的乱序,如下所示:

类实现是这样的:

如果我从mapping.xml和输入字符串中删除所有前面的字段到重复段,剩余的字符串被正确解组,然后被编组为json,我什至没有改变java类的实现,所以前面的字段保持未初始化,如预期的,但在编组后正确打印出来。我哪里做错了?

好的,我的骆驼代码在spring xml中,如下所示:

所以基本上,当我从保存响应的文件中取消注释输入并将注释 mq 放置到端点时,解组是可以的,但是如果我将请求放入队列并获得响应,那么我希望能纠正问题通过简单地添加 EOF 字符的转换,因为没有它,它会给我我首先报告的错误。并且转换没有帮助,因为我不知道如何编写 EOF (ascii 26),但即使我弄清楚了,我也不确定它是否会有所帮助。

0 投票
1 回答
674 浏览

utf-8 - 用 beanio 和骆驼解组固定长度的 utf-8 字符串

当没有用两个字节表示的变音符号时,解组消息是可以的,否则它会抱怨长度失败。我试图将正文转换为字符串类型并设置字符集 utf-8

在 Camel 路由中使用 BeanIO 解组之前,但这没有帮助。解决问题的正确方法是什么?

事实上,我认为 convertBodyTo 的目的可能不是告诉一些应该进行解组的类,实际字符串虽然声明为固定长度,但可能是可变长度,而是进行实际转换?但这要求我首先在某个地方告诉实际来源是 utf-8,可能来自端点。然后我可以在解组之前将它临时转换为具有单字节字符集表示的字符集,然后再转换回 utf-8?

在建议重点是为 BeanIO 提供要使用的字符集信息之后,我想出了:

但这给了我:

交付尝试后用尽:1 捕获:java.lang.NullPointerException:charset

我基本上从这里复制了使用beanio dataFormat进行编码的用法,不知道是否可以:

在注册表中找不到数据格式 - Camel

0 投票
2 回答
851 浏览

apache-camel - 带有分隔记录的平面文件

我正在寻找一种方法来解析包含嵌套记录的平面文件。作为一个例子,我有一个文件包含一行

最后我希望它映射到 POJO

我希望 Camel 数据格式之一支持这一点。但我似乎无法找到哪个会?

0 投票
1 回答
487 浏览

java - beanio - 按顺序读取数据(Segment - Inner Segment)

代码片段:

细节:

根据上面的代码片段,我想按顺序提取内容。

预期的 O/P:

有没有办法从提供的 XML 中提取上述内容。

提前致谢

0 投票
1 回答
384 浏览

bean-io - 如何在 beanio 中引入新的流格式

beanio 是否可以支持除 csv、fixedLength、delimited、json 和 xml 之外的更多流格式?我已经从 beanio 创建了一个新模块来添加新格式,但是 StreamCompiler 用于映射格式的 beanio.properties 位于 beanio 父项目中,我将如何向其中添加新格式?

0 投票
0 回答
58 浏览

java - 从固定长度文件解析多个类别组

我正在使用 BeanIO 来解析固定长度的记录。目前,它工作得很好。现在我有一个新的输入文件,它有如下 2 个不同的记录组。

上述两个部分都可以在任何时间发生,并且不按任何顺序发生。

如何创建 benio 映射来读取它们?

0 投票
1 回答
1304 浏览

java - beanio 映射文件中的 maxLength 功能不起作用

我有一个要求,我需要将一个字段值写入最大长度为 25 的文件。从 DB 我得到长度为 30。我在 beanio 映射文件中使用“maxLength = 25”属性。它仍然允许值长度大于 25。任何人都可以提出任何解决方案或解决方法吗?

0 投票
1 回答
852 浏览

spring-boot - @Group 注释中的 minOccurs 属性导致 UnexpectedRecordException

我是 Bean-IO 的新手,当文件中存在特定记录类型时,我试图为组的出现配置验证逻辑。例如,如果平面文件中有三个记录,如下所示。

560866
670972
57086659

我正在尝试设置以下逻辑

  1. 56 行和 67 行一起形成多行记录
  2. 56&67 记录可以独立于记录 57,但 57 记录不能没有 56&67。

我成功地在 @record 注释中使用 minOccurs 属性创建了第一个验证,但无法使用组对 56&67 执行相同的操作。

请在下面找到示例代码设置。

HeaderRecord 类保存 56&67 条记录详细信息

RecordObject 用于保存标题和行项目

使用上面的配置,当我尝试使用下面给出的记录解析文件时,它会抛出 UnexpectedRecordException。
560866
670972
57086659

堆栈跟踪:

2018-07-17 15:22:07,778[http-nio-8080-exec-2]ERROR org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/].[dispatcherServlet]-Servlet。 service()for servlet [dispatcherServlet] 在上下文中与路径 [] 引发异常 [请求处理失败;嵌套异常是 org.beanio.UnexpectedRecordException:到达流结束,预期记录 'tx56'] 根本原因 org.beanio.UnexpectedRecordException:到达流的末尾,预计在 org.beanio.internal.parser.UnmarshallingContext.newUnsatisfiedRecordException(UnmarshallingContext.java:367)~[beanio-2.1.0.jar:2.1.0] 处记录“tx56”。 parser.Group.unmarshal(Group.java:127)~[beanio-.1.0.jar:2.1.0] at org.beanio.internal.parser.DelegatingParser.unmarshal(DelegatingParser.java:39)~[beanio-2.1. 0.jar:2.1.0] 在 org.beanio.internal.parser。RecordCollection.unmarshal(RecordCollection.java:42)~[beanio-2.1.0.jar:2.1.0] at org.beanio.internal.parser.Group.unmarshal(Group.java:118)~[beanio-2.1.0 .jar:2.1.0] 在 org.beanio.internal.parser.BeanReaderImpl.internalRead(BeanReaderImpl.java:106)~[beanio-2.1.0.jar:2.1.0] 在 org.beanio.internal.parser.BeanReaderImpl .read(BeanReaderImpl.java:67)~[beanio-2.1.0.jar:2.1.0] 在 dk.coop.integration.fileconversion.service.sampleapplication.createFixedLengthFile(sampleapplication.java:32)~[classes/:? ]67)~[beanio-2.1.0.jar:2.1.0] 在 dk.coop.integration.fileconversion.service.sampleapplication.createFixedLengthFile(sampleapplication.java:32)~[classes/:?]67)~[beanio-2.1.0.jar:2.1.0] 在 dk.coop.integration.fileconversion.service.sampleapplication.createFixedLengthFile(sampleapplication.java:32)~[classes/:?]

注意:使用上述配置,以下场景有效

  • 56&67独立
    来 560866
    670972
  • 57 不能独立来
    57086659:此平面文件失败,但有适当的异常
  • 56&67 应该总是作为一个单一的记录出现。
    这也很好用。

其他详细信息:示例平面文件

560866
670972
560866
670972
560866
670972
57086659
57086659
57086659
57086659
52022
560866
670972
57086659

如上所示,在平面文件中,多个标头记录和 TX57 记录有可能作为一个实体出现。也可能有其他类型的记录介于两者之间,在这种情况下,我必须将第二次出现的 TX56,67 和 57 视为不同的项目。
在上面的示例中,前 10 条记录将形成一个记录对象,然后这些记录的第二次出现将形成第二个记录对象。很抱歉没有早点分享,但是还有另一个包含记录对象列表的包装类。

我在下面给出了工作中的 maven 项目 Github URL。https://github.com/Jayadeep2308/FlatFileParser

0 投票
1 回答
847 浏览

java - 带有注释的beanIO - 将对象列表写入json文件

我必须使用 beanIO 将对象列表写入 json 文件。每当我尝试时,我只会得到第一个被写入文件的对象,如下所示。

实际结果应该如下:

使用 pojo 如下:

这就是我的 impl 类所做的,

请建议应该添加什么,如何使用 BeanIO 实现将对象列表写入 json 文件。

谢谢..

0 投票
0 回答
274 浏览

flat-file - BeanIO:从平面文件读取的一对多关系

我在读取平面文件中发送的一对多关系时遇到性能问题,例如:

从上面的平面文件位置4-9employeeID并且11-13是部门信息。所以从第 1 行开始:employeeID=IMS001但是departmentGroup=D departmentNumber=12 一名员工可以有多个部门,所以从第二行开始,同样employeeID IMS001有一个departmentGroup=D departmentNumber=13

我有如下的xml映射

DTO:

有了这个,我可以逐行读取一个连接到一个部门的员工 ID。但是,如果您看到 a 的完整文件,employeeID=IMS001则有两个部门。如何有效地阅读这种关系?我不想在 db 上做太多的 get 调用来检查是否已经插入了部门。