【问题标题】:How do I get CsvDozerBeanWriter to pull column headers from Dozer XML mapping files如何让 CsvDozerBeanWriter 从 Dozer XML 映射文件中提取列标题
【发布时间】:2013-08-13 15:15:09
【问题描述】:

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

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

我在 2.1.0 都使用 SuperCSV 和 Dozer 扩展。

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

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

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

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

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

【问题讨论】:

    标签: supercsv


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 是的。更大的动机是我希望能够部署新的“快照”而不必重新部署软件。昨天我也有使用 MappingMetadata 的相同想法,但我认为它对此有点重量级,而且我在文档中的示例中遇到了一些问题。我有点倾向于自己滚动的迷你版本,我可以在其中包含我自己的元数据(标题)。
    猜你喜欢
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多