我正在努力将 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 将 List 转换为 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。 有没有办法将此列表数据转换为某种更美观的 XML 格式,以便我们可以使用 XSLT 映射该 XML 以避免任何代码更改。 或者是否有其他更有效的方法将此列表转换为 XML 结构
提前致谢
最佳答案
生成的 XML 的描述方式( header 成为元素标签),如果没有自定义编程,确实很难生成。最好的选择是使用 DOM4J 自己编写一些代码。
关于java - 从 java List 对象创建 XML 的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6791472/