0

我正在编写一个功能来生成屏幕数据的 CSV 快照。

我需要这是数据驱动的。因此,我需要避免在 Java 中对每个快照进行硬编码,而是从 XML 文件或数据库等数据源加载它。数据包含在 Java bean 中。

我在 2.1.0 都使用带有推土机扩展的 SuperCSV。

这种组合看起来很完美,因为我可以编写从 bean 到 Dozer XML 映射文件中的列的映射。

这对数据很有效,但我还没有找到一种方法来指定用于 CSV 列标题的字符串,而不是像在我看过的所有示例和测试用例中那样在 Java 中对它们进行硬编码. 那不是数据驱动的。

有没有办法让我在映射器文件中编码列标题。或者甚至从映射器文件中提取它们,构造一个列表并将它们传递给writerHeader()方法?

我认为只使用 bean 属性名称作为标头是可以的,尽管理想的情况是我在 XML 的<Field>标记中提供了一些额外的元数据表示法来指定标头。

我会在 SourceForge 上发布此内容,但那里出现 500 错误。

4

1 回答 1

1

我是一名超级 CSV 开发人员。你是我听说的第一个使用CsvDozerBeanWriter自己的人DozerBeanMapper- 很高兴听到这个功能很有用:)

那么“数据驱动”的目标是什么?听起来您希望您的代码非常通用,因此您可以通过更改 XML 来更改 CSV。那正确吗?当然,您不能动态配置单元处理器......或者您是否也尝试这样做!??

我会看一下 Dozer 的MappingMetadata API ,您可以通过调用getMappingMetadata(). DozerBeanMapper我从未使用过它,但看起来您可以通过这种方式派生列名(尽管您可能仅限于字段名)。

否则,您必须自己解析 XML 文件(我可能会使用 XPath)。如果您想在 XML 中使用其他一些元数据作为列名,则必须这样做。

于 2013-08-14T10:46:55.333 回答