SPRING
2019.01.13 / 22:16

[XML] XML ÆĽ̰ú VO ¸ÅÇνÃÅ°±â

hanulbit
Ãßõ ¼ö 250

µ¨ÆÄÀ̸¦ ÅëÇؼ­ ³Ñ¾î¿Â XML µ¥ÀÌÅ͸¦ multipart·Î ¹Þ¾Æ¼­ ÀÏ°ý µî·ÏÇÒ¶§ ó¸®ÇÏ´Â ³»¿ëÀÔ´Ï´Ù.

ÀÌ·¸°Ô ¹Þ¾Æ Àӽà Æú´õ¿¡ ÀúÀåÇسõ½À´Ï´Ù.

MultipartRequest file =

new MultipartRequest(request, savePath, 1000*1024*1024, "utf-8");

Àӽà Æú´õ¿¡ ÀÖ´Â ¾ÖµéÀº crontab ½á¼­ ÁÖ±âÀûÀ¸·Î Áö¿öÁö°í Àֳ׿ä. ¤»

XML ÆÄÀÏÀ» °®´Ù°¡ ³Ñ°Ü¼­ ±×¸®°í °¡Áö°í ¿Í¼­ ÆĽÌÇÕ´Ï´Ù.

 public Object[] drwngXmlParser(String fileName) {
  Object[] object = new Object[3];
  ArrayList<HashMap<String, String>> infoList = new ArrayList<HashMap<String, String>>();
  
  try {
   SAXBuilder sber = new SAXBuilder();
   File  xmlFileNm = new File(savePath+"/"+fileName);
   Document doc = sber.build(xmlFileNm);
   Element root = doc.getRootElement();
   List<Element> info = root.getChildren();

   //·çÆ® ¿¤¸®¸Õµå ¾ò¾î¿È
   for(int i=0; i<info.size(); i++){  

   //·çÆ® ÇÏÀ§ ¿¤¸®¸ÕÆ®°¡ °³¼ö¸¸Å­ ¹Ýº¹
    if(hasChildren(info.get(i))) {  

   //hasChildrenÀ» ÅëÇØ ¹Ýº¹ÁßÀÎ Element°¡ ÀÚ½ÄÀ» °¡Á³´ÂÁö ¿©ºÎ¸¦ ÆÇ´Ü
     List<Element> drwng = info.get(i).getChildren(); 

   //ÀÖ´Ù¸é ÇØ´ç ElementÀÇ Àڽijëµå ¸®½ºÆ®¸¦ °¡Á®¿È
     HashMap<String, String> infoMap = new HashMap<String, String>();

   //text µ¥ÀÌÅ͸¦ ´ãÀ» map »ý¼º
     for(int j=0; j<drwng.size(); j++){ 

   //ÀÌ ÇÏÀ§ elementÀÇ °³¼ö¸¸Å­ ¹Ýº¹ÇÔ
      if(hasChildren(drwng.get(j))) { 

   //hasChildrenÀ» ÅëÇØ ÇÏÀ§ ³ëµå°¡ ÀÖ´ÂÁö ÆľÇ
       List<Element> docInfo = drwng.get(j).getChildren(); 

   //ÀÖ´Ù¸é ÇØ´ç elementÀÇ Àڽijëµå ¸®½ºÆ®¸¦ °¡Á®¿È
       for(int l=0; l<docInfo.size(); l++) { 

   //ÇÏÀ§ ³ëµåµéÀ» ¹Ýº¹ÇÔ
        infoMap.put(docInfo.get(l).getName().replace("-", "").toUpperCase(),   

        docInfo.get(l).getText());

   //³ëµåÀÇ text¸¦ map¿¡ ´ãÀ½
       }
      } else {
       infoMap.put(drwng.get(j).getName().replace("-", "").toUpperCase(),

       drwng.get(j).getText());

   //ÇÏÀ§ ³ëµå°¡ ¾ø´Ù¸é ÇöÀç ³ëµåÀÇ text Á¤º¸¸¦ ´ãÀ½
      }
     }
     infoList.add(infoMap);

   //mapÀ» list¿¡ ´ãÀ½(<drwng> Çϳª°¡ add µÊ)
    } else {
     object[i] = info.get(i).getText();

   //udt_cnt¿Í dvsn_cd¸¦ object¿¡ ´ãÀ½
    }
   }
   object[2] = infoList;

   //drwng List¸¦ object2¿¡ ´ã´Â´Ù.
  } catch(Exception e) {
   e.getStackTrace();
  }
  return object;
 }

 

ÀÌ·¸°Ô Çؼ­ ÆĽÌÇÑ °á°ú´Â ¸®½ºÆ®¿¡ ´ã¾Æ¼­ return ÇÏ°Ô µË´Ï´Ù.

À̶§ ±Ã±ÝÇß´ø°Ô ÀÚ¹Ù ¸®Ç÷º¼ÇÀ̾ú´Âµ¥¿ä. ¸Ó ¾îµð´Ù°¡ ¾î¶»°Ô ½á¾ß Àß¾²´ÂÁöµµ ¸ð¸£°Ú°í Çؼ­ ±×³É VO¸¦ ¸ÅÇνÃÅ°´Âµ¥ ½è½À´Ï´Ù. VO´Â ¹Ù²ð¼öµµ ÀÖÀ¸´Ï±î¿ä ~ ±×¸®°í xml element°ªÀ̶û¸¸ ¸ÂÃçÁÖ¸é µÇ´Ï±î

public ArrayList<DrwngAllInfo> domainMapping(ArrayList<HashMap<String, String>> mapList) throws Exception {
  Class<?> c = Class.forName("com.ese.domain.DrwngAllInfo");
  Method[] methods = c.getMethods();
  ArrayList<DrwngAllInfo> drwngList = new ArrayList<DrwngAllInfo>();

  try {
   for(HashMap<String, String> list : mapList) {
    DrwngAllInfo target = (DrwngAllInfo) c.newInstance();
    Iterator iter = list.keySet().iterator();
    while(iter.hasNext()) {
     String key = (String) iter.next();
     for(int i=0; i<methods.length; i++) {
      if(methods[i].getName().startsWith("set")) {
       if(methods[i].getName().replace("set", "").toUpperCase().equals(key.replace("_", "").toUpperCase())){
        String colunm = methods[i].getName().replace("set", "").toUpperCase();
        Class<?>[] types = methods[i].getParameterTypes(); 
        Method m = c.getMethod(methods[i].getName(), types[0]);
        if(types[0].toString().equals("int"))
         m.invoke(target, Integer.parseInt(list.get(key)));
        else
         m.invoke(target, list.get(key));
        }
       }
      }
     }
    drwngList.add(target);
    }
   
  } catch(Exception e) {
   throw e;
  }

  return drwngList;
 }

 

¸¶Áö¸·¿¡ º¸¸é ³¡À¸·Î targetÀ̶ó´Â À̸§À¸·Î »ý¼ºµÈ VO°´Ã¼¸¦ addÇÏ°Ô µË´Ï´Ù.

ÀÌ·¸°Ô xmlÀÌ VO°´Ã¼¿¡ ¸ÅÇεȰÅÁÒ. Áö±Ýº¸´Ï map¿¡ ´ãÁö ¾Ê°í ±×³É xmlÀ» vo¿¡ ´ã¾Ò´õ¶ó¸é Á¶±Ý ´õ »¡¶óÁ³À»ÅÙµ¥¶ó´Â »ý°¢À» Çغ¾´Ï´Ù.