본문 바로가기
프로그래밍/Java

쿼리 결과 xml, xls 파일로 특정경로 업로드하기

by choi_9182 2020. 9. 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 으로 변환. 맨 위소스

'프로그래밍 > Java' 카테고리의 다른 글

Java 필터 개념 정리  (0) 2021.03.03
try ~ catch 구문에서 트랜잭션 롤백 안되는 문제  (0) 2020.10.06
프리징 현상 해결방법  (0) 2019.12.18
JDK, JRE, JVM 은 무엇인가  (0) 2019.09.28
생성자  (0) 2019.09.22

댓글