2017-08-08 53 views
0
  1. ,我有以下数据......在岁月在我的resultSet个月的形式,我想删除冗余年和月创建XML元素:在DataSet创建从数据目前XML

    [2015年,2016年,2017年] [05,06,07,08,09,10,11,12,01,02,03,04]

,我试图生成XML标记出来的这个数据年月明智如下:

<Root> 
<Year Y="2015"> 
<Month M="05"/> 
<Month M="06"/> 
<Month M="07"/> 
<Month M="08"/> 
<Month M="09"/> 
<Month M="10"/> 
<Month M="11"/> 
<Month M="12"/> 
</Year> 
<Year Y="2016"> 
<Month M="01"/> 
<Month M="02"/> 
<Month M="03"/> 
<Month M="04"/> 
<Month M="05"/> 
<Month M="06"/> 
<Month M="07"/> 
<Month M="08"/> 
<Month M="09"/> 
<Month M="10"/> 
<Month M="11"/> 
<Month M="12"/> 
</Year> 
<Year Y="2017"> 
<Month M="01"/> 
<Month M="02"/> 
<Month M="03"/> 
<Month M="04"/> 
<Month M="05"/> 
<Month M="06"/> 
<Month M="07"/> 
<Month M="08"/> 
<Month M="09"/> 
<Month M="10"/> 
<Month M="11"/> 
<Month M="12"/> 
</Year> 
</Root> 

但我得到的输出是:

<Root> 
<Year Y="2015"> 
<Month M="05"/> 
<Month M="06"/> 
<Month M="07"/> 
<Month M="08"/> 
<Month M="09"/> 
<Month M="10"/> 
<Month M="11"/> 
<Month M="12"/> 
<Month M="01"/> 
<Month M="02"/> 
<Month M="03"/> 
<Month M="04"/> 
</Year> 
<Year Y="2016"> 
<Month M="05"/> 
<Month M="06"/> 
<Month M="07"/> 
<Month M="08"/> 
<Month M="09"/> 
<Month M="10"/> 
<Month M="11"/> 
<Month M="12"/> 
<Month M="01"/> 
<Month M="02"/> 
<Month M="03"/> 
<Month M="04"/> 
</Year> 
<Year Y="2017"> 
<Month M="05"/> 
<Month M="06"/> 
<Month M="07"/> 
<Month M="08"/> 
<Month M="09"/> 
<Month M="10"/> 
<Month M="11"/> 
<Month M="12"/> 
<Month M="01"/> 
<Month M="02"/> 
<Month M="03"/> 
<Month M="04"/> 
</Year> 
</Root> 

这就是我如何解决我的问题

try{ 
      //Connection 
     connection = DriverManager.getConnection(conUrl); 
     statement = connection.createStatement(); 
     resultSet = statement.executeQuery(query); 

      //XML 
     DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); 
     Document document = documentBuilder.newDocument(); 

      // Super Root Node (Necessity) 
     Element necessaryElement = document.createElement("Root"); 
     document.appendChild(necessaryElement); 

     while(resultSet.next()){ 
      //Year Array populating 
      monitoringYear = resultSet.getString("Year"); 
      monitoringYearArray.add(monitoringYear); 

      //Month Array populating 
      monitoringMonth = resultSet.getString("Month"); 
      System.out.println("Monitoring Month "+ monitoringMonth); 

      monitoringMonthArray.add(monitoringMonth); 

     } 

        // remove duplicate from the Years ArrayList and retain the order 
       Set<String> uniqueYearList = new LinkedHashSet<String>(monitoringYearArray); 
       monitoringYearArray.clear(); 
       monitoringYearArray.addAll(uniqueYearList); 

       // Remove duplicate from the Month ArrayList and retain the order 
       Set<String> uniqueMonthList = new LinkedHashSet<String>(monitoringMonthArray); 
       monitoringMonthArray.clear(); 
       monitoringMonthArray.addAll(uniqueMonthList); 

        // XML Element for the Year 
       for(int year = 0; year < monitoringYearArray.size(); year++){ 
         // Super Root Node (Year) 
        Element yearElement = document.createElement("Year"); 
        necessaryElement.appendChild(yearElement); 

        Attr yearAttr = document.createAttribute("Y"); 
        yearAttr.setValue(monitoringYearArray.get(year)); 
        yearElement.setAttributeNode(yearAttr); 

          // XML Element for the Month 
         for(int month = 0; month < monitoringMonthArray.size(); month++){ 

           // Sub Root Node (Month) 
          Element monthElement = document.createElement("Month"); 
          yearElement.appendChild(monthElement); 

          Attr monthAttr = document.createAttribute("M"); 
          monthAttr.setValue(monitoringMonthArray.get(month)); 
          monthElement.setAttributeNode(monthAttr); 

         } 
       } 

如果您有任何建议如何解决这个问题,我将不胜感激 感谢

+0

...它只有8从5月开始,并上升到12 ...这是我遇到问题的地方。 2016年和2017年有12个月,所以我已经执行月份数组的大小为12的循环,因此它在2015年标记中移动了所有月份。 – Ned

+0

解决了问题:需要添加此条件... if monitoringMonthArray.get(month).equals(“01”)&& monitoringYearArray.get(year).equals(“2015”)break; – Ned

回答