프로그래밍/Java
쿼리 결과 xml, xls 파일로 특정경로 업로드하기
choi_9182
2020. 9. 15. 09:15
아래 소스는 doc 구조를 string 으로 변환해주는 메소드.
맨 아래 메소드 리턴에 변환해서 사용하기 위해 필요.
// doc -> string 으로 변환 메소드
String output = "";
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = null;
try {
transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
output = writer.getBuffer().toString();
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
return output;
쿼리결과 가공하여 아래 소스처럼 경로에 생성.
// ======== XML, XLS 업로드 및 DB INSERT 로직 ========
try {
// ======== XML 로직 ( 시작 ) ========
File xmlFileName = new File("c:\storage\test.xml");
BufferedWriter fw = new BufferedWriter(new FileWriter(xmlFileName, true));
fw.write(쿼리결과); // 쿼리결과
fw.flush();
fw.close(); // bufferedWriter close
// ======== XML 로직 ( 종료 ) ========
// ======== XLS 로직 ( 시작 ) ========
File xlsFileName = new File("c:\storage\test.xls");
FileOutputStream fos = new FileOutputStream(xlsFileName);
XSSFWorkbook workBook = 엑셀 생성 유틸 메소드 실행 ( 쿼리결과 리스트 넣어서 )
workBook.write(fos);
// ======== XLS 로직 ( 종료 ) ========
fos.close(); // FileOutputStream close
} catch (Exception e) {
e.printStackTrace();
}
XML String을 doc 형태로 변경
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder;
Document doc = null;
StringBuffer sb = new StringBuffer();
try {
docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.newDocument();
doc.setXmlStandalone(true); //standalone="no" 를 없애준다.
// XML ROOT
sb.append("<ROOT>");
for ( 객체 a : xml 쿼리 결과 ) {
sb.append(a.getXml());
}
sb.append("</ROOT>");
// DB에 있는 XML 형태의 스트링 NODE 로 변환
Document doc2 = docBuilder.parse(new ByteArrayInputStream(sb.toString().getBytes()));
Node node = doc.importNode(doc2.getDocumentElement(), true);
// 노드 Document 객체에 append
doc.appendChild(node);
} catch (Exception e) {
e.printStackTrace();
}
return getXmlString(doc); // doc 구조를 string 으로 변환. 맨 위소스