⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exporttoxml.java

📁 数据交换
💻 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 + -