개발

java xml multi 파일 읽기

고양이양말 2022. 6. 2. 14:13

<input type="file" id="files" name="files" multiple accept=".xml" />

 

List<MultipartFile> files = multiRequest.getFiles("files");
List<ContentsXmlVO> lstTmpUploadedData = new ArrayList<ContentsXmlVO>();
if (!files.isEmpty()) {

    for(int iResult = 0;iResult < files.size() ;iResult++) {
    	MultipartFile mfile = files.get(iResult);
        File file = new File(mfile.getOriginalFilename());
        mfile.transferTo(file);
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        Document document = db.parse(file);
        document.getDocumentElement().normalize();

        ContentsXmlVO uploadedData = new ContentsXmlVO();
        int successCnt = 0;
        int failCnt = 0;
        List<String> failItems = new ArrayList<String>();
        uploadedData.setOriginalFilename(mfile.getOriginalFilename());


        // 1. <ProviderId>museum</ProviderId>					getXmlData(document, "ProviderId"); -> museum
        // 2. <NewsItemType FormalName="News"/>					getXmlData(document, "NewsItemType", "FormalName"); -> News
        // 3. <Property FormalName="SubjectInfo" Value="문화"/>	getXmlData(document, "Property", FormalName:"SubjectInfo", "Value"); -> 문화
        
        item = "ProviderId";
        value = getXmlData(document, item);
        if (value != null) { successCnt++; uploadedData.setProviderId(value); }
        else { failCnt++; failItems.add(item);}

        uploadedData.setSuccessCnt(successCnt);
        uploadedData.setFailCnt(failCnt);
        uploadedData.setFailItems(failItems);

        lstTmpUploadedData.add(uploadedData);
            
	}
}
    
model.addAttribute("lstDuplicatedData" , lstTmpUploadedData);

 

    private String getXmlData(Document document, String gubun1) {
    	String rtnData = null;
    	
        NodeList nList = document.getElementsByTagName(gubun1);
        if (nList.item(0) == null) {
        	rtnData = null;
        } else {
        	rtnData = nList.item(0).getTextContent();
        }
        
        return rtnData;
    }
    
    private String getXmlData(Document document, String gubun1, String gubun2) {
    	String rtnData = null;
        
        NodeList nList = document.getElementsByTagName(gubun1);
        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
	            rtnData = eElement.getAttribute(gubun2);
            }
        }
        
        return rtnData;
    }
    
    private String getXmlData(Document document, String gubun1, String gubun2, String gubun3) {
    	String rtnData = null;
        
        NodeList nList = document.getElementsByTagName(gubun1);
        for (int temp = 0; temp < nList.getLength(); temp++) {
            Node nNode = nList.item(temp);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                Element eElement = (Element) nNode;
                if (eElement.getAttribute("FormalName").equals(gubun2)) {
    	            rtnData = eElement.getAttribute(gubun3);
                }
            }
        }
        
        return rtnData;
    }