合并Java对象并在java 7中跳过空值

时间:2015-08-12 15:48:24

标签: java xml csv xsd jaxb

我有一个程序采用平面csv文件并使用xsd,将内容映射到XML文档。

我目前有一个看起来像这样的流程

// A0797 and children as list
A0797 a0797Items = o.createELIXPRODUCTSCOREPRODUCTA0797();
a0797Items.setA0069(line[25]);
a0797Items.setA0070(line[26]);
if (line[27].length() > 0)
{
a0797Items.setA0074(new BigInteger(line[27]));
}
if (line[28].length() > 0)
{
a0797Items.setA0073(new BigInteger(line[28]));
}
a0797Items.setA0071(line[29]);
prd.getA0797().add(a0797Items);

第25,26列等映射到XML文档。该企业现在通过csv文件列33-37发送其他数据。这些也需要在A0069,A0074和A0074中设置。

我可以轻松地撤回对象,胸部想知道如何最好地将它们合并到上面脚本中的一行。

例如,今天,A0069部分将从CSV文件中获取数据,并创建:

<A0069>50</A0069>

使用文件中的额外数据,现在需要像这样生成

<A0069>20,30,50</A0069>

在某些情况下,您可能只有20和50,或20和50等等。

合并这些并跳过空值的最佳方法是什么?

如果其中一个值丢失(例如,20),那就太糟糕了:

<A0069>,30,50</A0069>

理想情况下,我想要这个:

<A0069>30,50</A0069> 

2015年8月13日更新:

因为我需要使用Java 7,所以到目前为止我已经采用了这种方法:

StringBuilder tUnitSB = new StringBuilder();
if (line[25] != null) tUnitSB.append(line[25]);
if (line[33] != null) tUnitSB.append(line[33]);
if (line[36] != null) tUnitSB.append(line[36]);
// Display results.
String tradeUnits = tUnitSB.toString();
a0797Items.setA0069(tradeUnits);

我无法解决的问题是,现在如何用逗号分隔它们,而不会添加额外的逗号。

0 个答案:

没有答案