개발
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;
}