【发布时间】:2020-10-21 00:11:28
【问题描述】:
我有一个程序可以将我的 CSV 文件转换为 XML 文件。
基于我的XSD 每个UserID 可以有多个Detail 对象
这是我期望的结果
<XML>
<Plant>
<UserID>37686</UserID>
<Verification>
<Detail>
<Number>4851</Number>
<IPF>2</IPF>
</Detail>
<Detail>
<Number>9978</Number>
<IPF>2</IPF>
</Detail>
<Detail>
<Number>9994</Number>
<IPF>2</IPF>
</Detail>
</Verification>
<PointNumber>0</PointNumber>
<Length>127.9</Length>
</Plant>
<Plant>
<UserID>11111</UserID>
<Verification>
<Detail>
<Number>9994</Number>
<IPF>2</IPF>
</Detail>
</Verification>
<PointNumber>0</PointNumber>
<Length>0</Length>
</Plant>
<XML>
这是我的 CSV 文件
User ID; Number; IPF;PointNumber; Length
37686;4851;2;0;127.9
37686;9978;2;0;0
37686;9994;2;0;0
11111;9994;2;0;0
我想在每一行上循环并控制UserID,如果它等于前一个,它不应该创建另一个Plant对象,只需要插入第二个和第三个值作为@987654330 @对象到前面的UserID
这是我的代码,但我无法实现。
String[] prevvalue = null;
while ((line = br.readLine()) != null) {
Start++;
String[] currentvalue;
String Cur = null;
currentvalue =line.split(";");
Detail Detail = new Detail();
ArrayList<Detail> DetailList = new ArrayList();
Plant Plant = new Plant();
if (Start >0 && prevvalue!= null) {
Cur = currentvalue[0];
if (Cur.equals(prevvalue)) {
Detail.setNumber(currentvalue[1]);
Detail.setIPF(currentvalue[2]);
}
elseif (Cur!= prevvalue) {
Plant.setUserID(currentvalue[0]);
Plant.setPointNumber(currentvalue[3]);
impianto.setLength(currentvalue[4]);
Detail.setNumber(currentvalue[1]);
Detail.setIPF(currentvalue[2]);
}
}
DetailList.add(Detail);
Plant.setDetail(Detaillist);
PlantList.add(Plant) ;
prevvalue = currentvalue[0];
谁能帮我解决这个问题? 问候 罪
【问题讨论】:
标签: java xml csv jaxb marshalling