【发布时间】:2011-10-11 02:41:55
【问题描述】:
我正在努力将 CSV 转换为 XML,虽然我有很多方法可以做到这一点,但我的要求是做到这一点,以便将来可以在不更改任何代码的情况下更改映射。
所以我们使用以下方法。
我们正在使用 Apache camel 进行集成,因此 CSV 由 camel 开箱即用地转换,并以 List<List<String>> 的形式提供
有类似的数据
{[header1,header2,header3],[1,2,3],[2,4,5]}
我需要将此列表数据转换为 XML 是已定义的形式,但由于我不能使用 java 映射,所以打算做类似的事情
使用XStream 将此列表转换为平面 XML 文件,然后使用 xslt 将原始 XML 文件映射到 xslt,但是当我使用 XStream 将列表转换为 XML 时,它会给出以下输出
<list>
<java.util.Arrays_-ArrayList>
<a class="string-array">
<string>Quantity</string>
<string>Price</string>
<string>Total</string>
<string>Date</string>
<string>ID</string>
<string>Name</string>
<string>Ref#</string>
</a>
</java.util.Arrays_-ArrayList>
<java.util.Arrays_-ArrayList>
<a class="string-array">
<string>4</string>
<string>1.13</string>
<string>4.52</string>
<string>9/4/2008</string>
<string>275</string>
<string>Blue Ink</string>
<string>49385730</string>
</a>
</java.util.Arrays_-ArrayList>
<java.util.Arrays_-ArrayList>
<a class="string-array">
<string>5</string>
<string>2.16</string>
<string>2.16</string>
<string>8/3/2008</string>
<string>229</string>
<string>Red Ink</string>
<string>20549348</string>
</a>
我的示例 CSV 是
Quantity,Price,Total,Date,ID,Name,Ref#
4,1.13,4.52,9/4/2008,275,Blue Ink,49385730
5,2.16,2.16,8/3/2008,229,Red Ink,20549348
所以似乎不可能使用 XSLT 将此原始 XML 映射到所需的 XML。 有什么方法可以将此 List 数据转换为一些更美观的 XML 格式,以便我们可以将该 XML 与 XSLT 映射以避免任何代码更改。 或者有没有其他更有效的方法可以将此列表转换为 XML 结构
提前致谢
【问题讨论】:
-
所需的 XML 是什么?在将 XStream 输出转换为所需的 XML 格式时遇到什么问题?
-
@Olaf:最终的 XML 可以是团队决定的任何格式,但我主要关心的是 XStream 提供的输出,因为我放在帖子中的一个输出似乎无法满足我的目标,因为我将无法在其中使用 XSLT,我想要的只是 XStream 的输出应该像标题值应该作为标签工作,并且标签内应该有值,以便我可以使用 XSLT 将其转换为所需格式
标签: java xml-serialization xstream apache-camel xmlmapper