Java读取Oracle数据库并解析成XML文件


 
  
 
  
package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DBConnection {
	//数据库驱动对象
	public static final String DRIVER="oracle.jdbc.driver.OracleDriver";
	//数据库连接地址(数据库名)
	public static final String URL="jdbc:oracle:thin:@192.168.110.2:1521:oraplan";
	//登陆名
	public static final String NAME="supplan";
	//登陆密码
	public static final String PWD="plansup";
	
	private static  Connection conn =null ; //连接实例
	
	/*******************单例模式的应用开始***************************/
	private static  DBConnection DBInstance = new DBConnection(); //数据库类实例:单例模式第一步
	//私有的构造方法:单例模式第二步
	private DBConnection(){
		try {
			Class.forName(DRIVER); //注册驱动
			conn = DriverManager.getConnection(URL,NAME,PWD); //获取连接
		} catch (ClassNotFoundException e) {
			System.out.println("找不到指定文件!"); //找不到驱动包
			e.printStackTrace();
		}catch(SQLException e){ //连接数据库时报异常
			e.printStackTrace();
		}
	}
	
	//获取实例:单例模式第三步
	public static DBConnection getInstance(){
		return DBInstance;
	}
	/*******************单例模式的应用结束***************************/
	
	//获取连接
	public Connection getConn(){
		return conn;
	}
	
	//测试
	public static void main(String[] agrs){
		Connection conn = DBConnection.getInstance().getConn();
		if(conn!=null){
			System.out.println("数据库连接成功2");
		}else{
			System.out.println("数据库连接失败");
		}
	}
}
 
2.建立实例类
package com.util;

import java.util.Date;

public class WorkRecord {
	private String com_id;//公司编号
	private String ID;//编号
	private String content;//日记内容
	private String clock; //时间
	private String YH_ID;//用户编号
	public String getCom_id() {
		return com_id;
	}
	public void setCom_id(String com_id) {
		this.com_id = com_id;
	}
	public String getID() {
		return ID;
	}
	public void setID(String iD) {
		ID = iD;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}
	public String getClock() {
		return clock;
	}
	public void setClock(String clock) {
		this.clock = clock;
	}
	public String getYH_ID() {
		return YH_ID;
	}
	public void setYH_ID(String yH_ID) {
		YH_ID = yH_ID;
	}
	
}
3.
数据库查询:JDBC全查
package com.CRUD;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.dao.impl.DOMImpl;
import com.util.DBConnection;
import com.util.WorkRecord;

public class CRUDImpl {
	private Connection conn=null;
	private PreparedStatement pst=null;
	private ResultSet rs=null;
	
	//全查
	public List findAll(){
		List recordList = new ArrayList(); //创建List实例
		WorkRecord record=null;
		try {
			String sql = "select * from TEST_XML";//sql语句
			conn = DBConnection.getInstance().getConn();//建立连接
			pst = conn.prepareStatement(sql);//发送sq命令并进行预编译
			rs = pst.executeQuery();//实行sql命令并返回结果集
			while(rs.next()){ //如果rs.next()为true,说明结果集中有值,也就需要进行遍历了
				record = new WorkRecord();
				record.setCom_id(rs.getString(1)); //第一列
				record.setID(rs.getString(2));
				record.setContent(rs.getString(3));
				//
				record.setClock(rs.getString(4));
				//record.setClock(new DOMImpl().dateToString(rs.getDate(4))); //数据库中此列的数据为Date类型,WorkRecord中的是String类型的
				record.setYH_ID(rs.getString(5));
				recordList.add(record);//将对象添加到list中
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return recordList; //返回结果
	}
	
}
 
  

4.生成和解析XML文档

package com.dao.impl;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.dom4j.Attribute;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.SAXException;

import com.CRUD.CRUDImpl;
import com.util.WorkRecord;

/**
 * DOM生成和解析XML文档
 * */

public class DOMImpl {
	private Document document;
	private DocumentBuilder builder;
	/**
	 * 初始化
	 * */
	public void init() {
		try {
			DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();//创建解析工厂实例
			builder = builderFactory.newDocumentBuilder(); //创建解析器实例
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 创建XML
	 * @param fileName 文件路径名称
	 * */
	public  void creatXML(String fileName) {
		CRUDImpl CRUD = new CRUDImpl(); //实例化
		List recordList = CRUD.findAll(); //查询结果
		
		this.document = builder.newDocument();//实例化document对象
		
		//是否呼叫外部文件,此处设置为true,表示此文件独立,不需要呼叫外部文件,也就是不需要导入外部的dtd文件
		this.document.setXmlStandalone(true);
		
		this.document.setXmlVersion("1.0");//版本号
		
		Element menu_config = this.document.createElement("menu-config"); //创建根目录
		Element menu = this.document.createElement("menu");//创建menu
		
		for(int i=0;i getRecordList(String fileName){
		List workList = new ArrayList();
		try {
			this.document=builder.parse(fileName);//指定要解析的文件
			NodeList root = this.document.getChildNodes();//获取根目录
			for(int i=0;ipackage com.test;

import java.util.List;

import com.dao.impl.DOMImpl;
import com.util.WorkRecord;

public class DOMXmlTest {
	public static void main(String[] args){
		DOMImpl dom = new DOMImpl();
		String fileName = "D:\\XML\\DOMXml.xml";
		dom.init();
		dom.creatXML(fileName); //创建XML文件
		
//		dom.parseXML(fileName);//解析XML
		//遍历
	/*	List workList =dom.getRecordList(fileName);
		for(int i=0;i





你可能感兴趣的:(xml)