【问题标题】:Create a multiple child object for XML from CSV file in JAVA - JAXB Marshalling从 JAVA 中的 CSV 文件创建 XML 的多个子对象 - JAXB Marshalling
【发布时间】: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


    【解决方案1】:

    我找到了解决方案... 我的错误在于对象的定义,我在循环内部定义了它们,但其中一些必须在内部定义,另一个必须在外部定义。

    再次感谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 1970-01-01
      • 2014-10-26
      相关资源
      最近更新 更多