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

📄 xmlwriter.java

📁 eclipse java/jsp 航空管理系统
💻 JAVA
字号:
package zhangchunliang.model;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.jdom.Document;
import org.jdom.Element;
import zhangchunliang.model.DBHandler;


/**
 * @author			:张春亮|zhangchunliang@neusoft.com
 * @version			:0.1
 *
 * <p>Description	:该类用于实现从数据库读出数据并生成XML文档的操作</p>	
 * <p>Project		:CIQMS</p>
 * <P>Company		:东软股份国际合作事业部</p>
 * <p>CreateDate	:2005-4-26</p>
 */

public class XMLWriter {
	Document doc=null;
	Element tempElement=null;
	DBHandler dbhandler=null;
	ResultSet dbInfo=null;//保存数据库信息,即systable表的信息

	/*
     * name:         构造方法
     * Description:  用于实现数据库连接的初始化工作
     * @return       无 
     */
	
	public XMLWriter(){
		dbhandler=new DBHandler();
		
	}
	
	/*
     * name:         获得XML文档的方法
     * Description:  用于实现从数据库中的读出数据并生成XML文档
     * @return       返回Document类型的对象,保存数据库中的数据。
     */
	
	public Document getDocument()throws SQLException{
		/*将systable表的信息保存以备以后使用*/
		dbInfo=dbhandler.dbQuery("systable");
		doc=new Document();
		/*创建文档的根结点DataBase*/
		Element database =new Element("DataBase").setAttribute("name","ciqms");
		doc.setRootElement(database);
		
		/*调用辅助方法addSysTable(),完成系统表的添加工作*/
		if(this.addSysTable(doc.getRootElement())==0){
			
			//add system table failure
		}
		/*调用辅助方法addOtherTables(),完成其它表的添加工作*/
		if(this.addOtherTables(doc.getRootElement())==0){
			//add other tables failure
		}
		return doc;
	}
	
	/*
     * name:         添加系统表的辅助方法
     * Description:  用于实现将数据库中的systable表加到文档中
     * @return       返回int型,为0添加失败,为1添加成功
     */
	
	private int addSysTable(Element db){
		
		try{
			/*获得systable的信息*/
			ResultSetMetaData tabInfo=dbInfo.getMetaData();
			/*获得systable的列数*/
			int numOfColumn=tabInfo.getColumnCount();
			int i=0;
			/*在文档中创建table结点作为systable的父结点*/
			Element table =new Element("table");
			/*添加systable的name属性,在文档中记录该表表名*/
			table.setAttribute("name","systable");
			/*添加systable的primarykey属性,在文档中记录该表的主键信息*/
			table.setAttribute("primarykey","no");
			/*将table结点做为DataBase的子结点*/
			db.addContent(table);
			/*将系统表中的所有记录加到文档中*/
			while(dbInfo.next()){
				/*创建record结点,并将其做为table的子结点*/
				Element record=new Element("record");
				table.addContent(record);
				
				String data=null;
				/*将记录中各字段的数据加到文档中*/
				for(i=1;i<=numOfColumn;i++){				
					try{
						/*获取字段的数据*/
						data=new String(dbInfo.getString(i));
					}catch(Exception e){
						//unsupportedencodingexception
					}
					if(data==null)
						data="";
					/*创建field结点,并将其做为record的子结点*/
					Element field=new Element(
							tabInfo.getColumnName(i)).setText(data);
					/*在文档中的field结点上添加type属性,表示字段的数据类型*/
					field.setAttribute("type",tabInfo.getColumnTypeName(i));
					record.addContent(field);
					data=null;
				}
			}
		}catch(SQLException e){
			//handle sqlexception
			return 0;
		}

		
		return 1;
	}

	/*
     * name:         添加其它表到文档的方法
     * Description:  用于实现将数据库中的除系统表外的所有表都添加到文档中
     * @return       返回int型,为0操作成功,为1操作失败
     */
	
	private int addOtherTables(Element db){
		try{
			dbInfo.beforeFirst();
			/*将除系统表以外的所有表都加到文档中*/
			while(dbInfo.next()){
				/*把每个表都添加做文档中的table结点*/
				Element table=new Element("table");
				/*为每个表在文档中添加name属性和primarykey属性*/
				table.setAttribute("name",dbInfo.getString("tablename"));
				table.setAttribute("primarykey",dbInfo.getString("primarykey"));
				/*将table结点作为DataBase的子结点*/
				db.addContent(table);
				/*根据dbInfo保存的信息依次对每个表进行全部查询,得到本次要处理的表的信息*/
				ResultSet curTabRs=dbhandler.dbQuery(
						dbInfo.getString("tablename"));
			    /*将本次要处理的表的所有记录加到文档中*/
				while(curTabRs.next()){
					/*创建record结点,并将其做为table的子结点*/
					Element record=new Element("record");
					table.addContent(record);
					/*获取本次要处理表的信息*/
					ResultSetMetaData tabInfo=curTabRs.getMetaData();
					/*取得本次要处理表的列数*/
					int numOfColumn=tabInfo.getColumnCount();
					int i=0;
					String fieldData=null;
					/*将每个字段的数据都添加到文档中*/
					for(i=1;i<=numOfColumn;i++){
						try{
							fieldData=new String(curTabRs.getString(i));
						}catch(Exception e){
							//unsupportedencodingexception
						}
						if(fieldData==null)
							fieldData="";
						
						/*创建field结点,并将其作为record的子结点*/
						Element field=new Element(
								tabInfo.getColumnName(i)).setText(fieldData);
						/*为field结点添加type属性,记录该字段的类型*/
						field.setAttribute("type",tabInfo.getColumnTypeName(i));
						record.addContent(field);
						fieldData=null;
					}
					
				}
			}
			
			
		}catch(SQLException e){
			
			//handle sqlexception
			return 0;
		}
		
		
		return 1;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -