gpt4 book ai didi

java - 使用 BeanIO 在单个文件中解析多个对象

转载 作者:行者123 更新时间:2023-12-02 11:45:05 25 4
gpt4 key购买 nike

我在一个文件中有以下两种类型的记录,我可以使用 BeanIO 解析该文件以获取记录类型 1 或 2 中的任何一种,但我无法在单个解析器中同时执行这两种操作。我不知道如何在单个记录中使用我的两个映射。请给我指导。谢谢。

1   Length(20)    5       5        5      5      5
Columns S.No Name Street City Zip

2 Columns S.No Age Position
Length(20) 5 2 18

映射.xml

<record name="employee" class="com.Employee" collection="list" minOccurs="1" maxOccurs="unbounded">
<field name="S.No" length="5" />
<field name="Name" length="5" />
<field name="Street" length="5" />
<field name="City" length="5" />
<field name="Zip" length="5" />
</record>

<record name="employee" class="com.Employee" collection="list" minOccurs="1" maxOccurs="unbounded">
<field name="S.No" length="5" />
<field name="Age" length="2" />
<field name="Position" length="12" />
</record>

更新1:我们可以使用S.No来区分记录记录没有顺序,记录之间也没有依赖关系。

    001  Jose Str1 City 56005
001 Hene Str1 City 66005
005 20 General Manager
001 King Str1 City 76005
005 20 General Manager
001 Leo Str1 City 86005
005 90 COO
005 70 Deputy Manager

最佳答案

您需要一个包含 Employee 记录列表的类

public class EmployeeGroup {

private List<Employee> employees;
// getter + setter
}

然后您需要在 mapping.xml 中定义一个 group 来读取所有 Employee 记录

<stream name="example" format="fixedlength">
<group name="employeeGroup" class="com.EmployeeGroup">
<record name="employees" class="com.Employee" minOccurs="1" maxOccurs="unbounded" collection="list">
<field name="S.No" length="5" rid="true" literal="001"/>
<field name="Name" length="5"/>
<field name="Street" length="5"/>
<field name="City" length="5"/>
<field name="Zip" length="5"/>
</record>
<record name="employees" class="com.Employee" minOccurs="1" maxOccurs="unbounded" collection="list">
<field name="S.No" length="5" rid="true" literal="005"/>
<field name="Age" length="2"/>
<field name="Position" length="12"/>
</record>
</group>
</stream>

记下 literal 属性的值以标识不同的记录。

关于java - 使用 BeanIO 在单个文件中解析多个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48267155/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com