📄 exporttoxml.java
字号:
package com.gemt.dataswap.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import java.util.Set;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import com.gemt.dataswap.config.TableConfig;
import com.gemt.dataswap.dao.ConnectionFactory;
import com.gemt.dataswap.dataset.DataType;
import com.gemt.dataswap.resources.ReadConfig;
public class ExportToXML extends ConnectionFactory
{
private static final Log log = LogFactory.getLog(ExportToXML.class);
private ExportToXML() {
// TODO Auto-generated constructor stub
}
public static void generateXML() {
if(log.isDebugEnabled())
log.debug("generateXML.begin()...");
Map<String, TableConfig> tableConfigs = ReadConfig.tableConfig;
Set<String> tableNames = tableConfigs.keySet();
PreparedStatement pstmt = null;
ResultSet rs = null;
for(String tableName : tableNames) {
TableConfig tableConfig = tableConfigs.get(tableName);
//考虑到数据量会比较大, 所以为每个表生成一个XML文件, 在此处设置每个表对应的XML的头部信息
StringBuffer sb = new StringBuffer();
sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
sb.append("<dataset><table name='" + tableName + "' security='" + ReadConfig.security + "'>");
for(int i = 0; i < tableConfig.getField().length; i++) {
sb.append("<column>" + tableConfig.getField()[i].getName() + "</column>");
}
Connection con = getConnection(tableConfig.getFromDb());
if(log.isDebugEnabled()) {
log.debug("enquiry sql is :: " + tableConfig.getCondition());
}
try {
pstmt = con.prepareStatement(tableConfig.getCondition());
rs = pstmt.executeQuery();
while(rs.next()) {
sb.append("<row>");
for(int j = 1; j <= rs.getMetaData().getColumnCount(); j++) {
//if(log.isDebugEnabled())
// log.debug(rs.getMetaData().getColumnName(j) + " " + rs.getObject(j));
if(DataType.TIMESTAMP.equals(tableConfig.getField()[j-1].getType())) {
sb.append("<value>" + rs.getTimestamp(j) + "</value>");
}
else if(DataType.TIME.equals(tableConfig.getField()[j-1].getType()))
{
sb.append("<value>" + rs.getTime(j) + "</value>");
}
else {
sb.append("<value>" + rs.getObject(j) + "</value>");
}
}
sb.append("</row>");
}
sb.append("</table></dataset>");
if(!"".equals(sb.toString())) {
Document document = DocumentHelper.parseText(sb.toString());
write(document, tableName);
}
}
catch (SQLException e) {
if(log.isErrorEnabled()) {
log.error("exception generate when export data for table :: " + tableName + " " + e);
}
}
catch (DocumentException de) {
if(log.isErrorEnabled()) {
log.error("exception when generate xml file :: " + tableName + " " + de);
}
}
catch(IOException ioe) {
if(log.isErrorEnabled()) {
log.error("exception when write xml file :: " + tableName + " " + ioe);
}
}
finally {
try
{
if(rs != null) {
rs.close();
}
if(pstmt != null) {
pstmt.close();
}
}
catch (SQLException sqe)
{
if(log.isErrorEnabled()) {
log.error("error when close some db param " + sqe);
}
}
}
//if(Constants.DATABASE_ORACLE.equals(dbDialectMap.get(tableConfig.getFromDb()))) {
//}
}
closeAllConnection();
if(log.isDebugEnabled())
log.debug("generateXML.end()...");
}
public static void write(Document document, String tableName) throws IOException {
if(log.isDebugEnabled()) {
log.debug("write file begin ......");
}
boolean flag = false;
flag = new File(ReadConfig.outfolder).mkdirs();
if(log.isDebugEnabled()) {
log.debug("create folder flag is " + flag);
}
// 指定文件
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer = new XMLWriter(new FileWriter(new File(ReadConfig.outfolder, tableName + ".xml")), format);
writer.write( document );
writer.close();
/*
// 美化格式
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
writer = new XMLWriter( System.out, format );
writer.write( document );
// 缩减格式
format = OutputFormat.createCompactFormat();
writer = new XMLWriter( System.out, format );
writer.write( document );
*/
if(log.isDebugEnabled()) {
log.debug("write file end ......");
}
}
/**
* @param args
*/
public static void main(String[] args) {
generateXML();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -