环境
有一个旧应用程序可以生成 PDF 格式的报告。它使用 XML 文档(包含报告数据)和 XSLT(描述报告布局)与 Apache FOP 一起生成 PDF。此应用程序将被新应用程序取代。
新应用程序包含作为 Java Bean 的报告数据(它们是 Hibernate 注释实体)。不再有 XML 文档。
意图
为了“节省”时间,已决定 XSLT 应保持原样。Apache FOP 库也被再次使用。这将留下 XML 文档。
其目的是以某种方式获取表示报告数据的 Java 对象树(休眠实体),并以给定 XSLT 仍可理解的方式生成 XML 文档(无需更改 XSLT)。
建议的解决方案
- 根据表示报表数据的 Hibernate 对象树创建第二个对象树。(也用 JAXB 注释来注释 Hibernate 注释的实体似乎是错误的。)
- 使用 JAXB 2 注释对新的仅报告数据类进行注释,以便将它们编组为与 XSLT 所理解的旧 XML 文档足够相似的 XML 文档。
问题
- 建议的解决方案花费大量时间编写 Java 类,或多或少地对预期的 XML 文档结构进行建模。
问题
有没有更好更快的方法?
似乎只是想“写下”包含在“正确”位置填写的报告数据的 XML 文档。
可能的解决方案空间非常开放。你会用什么,为什么?
- JAXB 2
- XMLStreamWriter?
- 时髦?
- 斯卡拉?
- 还有什么?
笔记
- 所需的 XML 文档没有 XML Schema 或 DTD。
- 与使用 Java 编写 XML 的最佳实践和设计指南有关吗?