用dom、jdom、dom4j来实现取出Oracle中dept表内容,并生成xml文件

1.1 XML简介

XML指的是可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据,XML很重要,也很容易学习。

XML是一种很像HTML的 标记语言,需要注意的是,它是被设计为传输数据,而不是像HTML那样用于显示数据,另外XML标签没有被预定义,需要我们自己定义标签。


1.2 XML有什么作用呢?

XML是对HTML的补充,是不会代替HTML的,这一点很重要。XML在web开发中非常重要,而它的作用在于传输数据。可以这么描述XML:XML是独立于软件和硬件的信息传输工具。


下面是利用dom操作,将Oracle的c##scott用户中dept表内容生成xml文件保存在硬盘上。

首先,先要创建连接数据库的类:

package org.bruis.dbc;
import java.sql.Connection ;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DatabaseConnection {
	private static final String DBDRIVER = "oracle.jdbc.driver.OracleDriver" ;
	private static final String DBURL = "jdbc:oracle:thin:@localhost:1521:ORCLBRUS" ;
	private static final String DBUSER = "c##scott" ;
	private static final String DBPASSWORD = "tiger" ;
	private Connection conn = null ;
	
	public DatabaseConnection() {
		try {
			Class.forName(DBDRIVER) ;
		} catch(ClassNotFoundException e) {
			e.printStackTrace() ;
		}
		try{
			conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
		} catch(SQLException e) {
			e.printStackTrace();
		}
	}
	
	public Connection getConnection() {
		return this.conn ;
	}
	
	public void close() {
		if(this.conn != null) {
			try {
				this.conn.close();
			} catch(SQLException e) {
				e.printStackTrace();
			}
		}
	}
	


利用dom操作实现:

package org.bruis.XML;
import java.io.*;
import java.sql.*;

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

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import org.bruis.dbc.DatabaseConnection;

public class CreateXMLDemo {
	/*
	 * 使用DOM来将生成的XML文件输出到指定目录中,有几个重要的步骤
	 * 1.建立DocumentBuilderFactory
	 * 2.建立DocumentBuilder
	 * 3.建立Document
	 * 4.建立TransformerFactory
	 * 5.建立Transformer
	 * 6.建立DOMSource
	 * 7.建立StreamResult
	 * 
	 * */
	private Connection conn = null ;
	private PreparedStatement pstmt = null ;
	private ResultSet rs = null ;
	
	public static void main(String[] args) {
		new CreateXMLDemo() ;
	}
	public CreateXMLDemo() {
		
		DatabaseConnection dbc = new DatabaseConnection() ;
		conn = dbc.getConnection() ;
		String sql = "select * from dept" ;
		try {
			pstmt = conn.prepareStatement(sql) ;
			rs = pstmt.executeQuery() ;
			DocumentBuilder builder = getBuilder() ;
			Document doc = builder.newDocument() ;
			Element dept = doc.createElement("dept") ;
			while(rs.next()) {
				Element deptno = doc.createElement("deptno") ;
				Element dname = doc.createElement("dname") ;
				Element loc = doc.createElement("loc") ;
				deptno.appendChild(doc.createTextNode(rs.getString(1))) ;
				dname.appendChild(doc.createTextNode(rs.getString(2))) ;
				loc.appendChild(doc.createTextNode(rs.getString(3))) ;
				dept.appendChild(deptno) ;
				dept.appendChild(dname) ;
				dept.appendChild(loc) ;
			}
			doc.appendChild(dept) ;
			DOMXML(doc);
		} catch(SQLException e) {
			e.printStackTrace();
		}
		dbc.close();
		
	}
	public DocumentBuilder getBuilder() {
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
		DocumentBuilder builder = null ;
		try {
			builder = factory.newDocumentBuilder();
		} catch(ParserConfigurationException e) {
			e.printStackTrace();
		}
		return builder ;
	}
	public void DOMXML(Document doc) {
		TransformerFactory tfactory = TransformerFactory.newInstance() ;
		Transformer tf = null ;
		try {
			tf = tfactory.newTransformer() ;
		} catch (TransformerConfigurationException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		tf.setOutputProperty(OutputKeys.ENCODING,"GBK") ;
		DOMSource source = new DOMSource(doc) ;
		StreamResult result = null ;
		result = new StreamResult(new File("e:" + File.separator + "OrclToXML.xml")) ;
		try {
			tf.transform(source, result);
		} catch (TransformerException e2) {
			// TODO Auto-generated catch block
			e2.printStackTrace();
		}
	}
}

利用jdom来实现:

package org.bruis.XML;
import java.io.File;
import java.io.FileOutputStream ;
import java.io.IOException;
import java.sql.* ;
import org.bruis.dbc.DatabaseConnection ;
import org.jdom.Document; 
import org.jdom.Element ;
import org.jdom.output.XMLOutputter ;

public class JdomCreateXml {
	private Connection conn = null ;
	private PreparedStatement pstmt = null ;
	private ResultSet rs = null ;
	public static void main(String[] args) {
		new JdomCreateXml() ;
	}
	public JdomCreateXml() {
		DatabaseConnection dbc = new DatabaseConnection() ;
		conn = dbc.getConnection();
		String sql = "select * from dept " ;
		try {
			pstmt = conn.prepareStatement(sql) ;
			rs = pstmt.executeQuery() ;
			Element dept = new Element("dept") ;
			while(rs.next()) {
				Element deptinfo = new Element("deptinfo") ;
				Element deptno = new Element("deptno") ;
				Element dname = new Element("dname") ;
				Element loc = new Element("loc") ;
				deptno.setText(rs.getString(1)) ;
				dname.setText(rs.getString(2)) ;
				loc.setText(rs.getString(3)) ;
				deptinfo.addContent(deptno) ;
				deptinfo.addContent(dname) ;
				deptinfo.addContent(loc) ;
				dept.addContent(deptinfo) ;
			}
			Document doc = new Document(dept) ;
			DoJdom(doc) ;
		} catch(SQLException e) {
			e.printStackTrace();
		}
		
	}
	public void DoJdom(Document doc) {
		XMLOutputter output = new XMLOutputter() ;
		output.setFormat(output.getFormat().setEncoding("GBK"));//设置编码为GBk
		try {
			output.output(doc, new FileOutputStream("e:" + File.separator + "Jdomdemo.xml"));
		} catch(IOException e) {
			e.printStackTrace();
		}
		
	}
}

利用dom4j来实现:

package org.bruis.XML;
import java.io.*;
import java.sql.* ;
import org.bruis.dbc.*;
import org.dom4j.DocumentHelper;
import org.dom4j.io.*;
import org.dom4j.*;
public class Dom4jCreateXML {
	private Connection conn ;
	private PreparedStatement pstmt ;
	private ResultSet rs ;
	
	public static void main(String[] args) {
		new Dom4jCreateXML() ;
	}
	public Dom4jCreateXML() {
		DatabaseConnection dbc = new DatabaseConnection() ;
		//打开数据库
		conn = dbc.getConnection();
		String sql = "select * from dept " ;
		Document doc = DocumentHelper.createDocument();
		try {
			pstmt = conn.prepareStatement(sql) ;
			rs = pstmt.executeQuery();
			Element dept = doc.addElement("dept") ;
			while(rs.next()) {
				Element deptno = dept.addElement("deptno") ;
				Element dname = dept.addElement("dname") ;
				Element loc = dept.addElement("loc") ;
				deptno.setText(rs.getString(1)) ;
				dname.setText(rs.getString(2));
				loc.setText(rs.getString(3));
			}
			OutputFormat format = OutputFormat.createPrettyPrint();
			format.setEncoding("GBK");
			XMLWriter writer = null ;
			try {
				writer = new XMLWriter(new FileOutputStream("e:" + File.separator + "Dom4jDemo.xml"),format) ;
				writer.write(doc);
				writer.close();
			} catch(IOException e) {
				e.printStackTrace();
			}
			
			System.out.println("成功...");
			
		} catch(SQLException e) {
			e.printStackTrace();
		}
		//关闭数据库
		dbc.close();
		
	}
}

实现效果:



文件Dom4jDemo.xml



文件OrclToXml.xml:



文件Jdomdemo.xml:






  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、JDOM 简介 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。 JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。 在使用设计上尽可能地隐藏原来使用XML过程的复杂性。利用JDOM处理XML文档将是一件轻松、简单的事。 JDOM 在2000年的春天被Brett McLaughlin和Jason Hunter开发出来,以弥补DOM及SAX在实际应用当的不足之处。 这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JAVA程序员在使用时来用起来总觉得不太方便。 DOM的缺点主要是来自于由于Dom是一个接口定义语言(IDL),它的任务是在不同语言实现的一个最低的通用标准,并不是为JAVA特别设计的。JDOM的最新版本为JDOM Beta 9。最近JDOM被收录到JSR-102内,这标志着JDOM成为了JAVA平台组成的一部分。 二、JDOM 包概览 JDOM是由以下几个包组成的 org.jdom 包含了所有的xml文档要素的java类 org.jdom.adapters 包含了与dom适配的java类 org.jdom.filter 包含了xml文档的过滤器类 org.jdom.input 包含了读取xml文档的类 org.jdom.output 包含了写入xml文档的类 org.jdom.transform 包含了将jdom xml文档接口转换为其他xml文档接口 org.jdom.xpath 包含了对xml文档xpath操作的类三、JDOM 类说明 1、org.JDOM这个包里的类是你J解析xml文件后所要用到的所有数据类型。 Attribute CDATA Coment DocType Document Element EntityRef Namespace ProscessingInstruction Text 2、org.JDOM.transform在涉及xslt格式转换时应使用下面的2个类 JDOMSource JDOMResult org.JDOM.input 3、输入类,一般用于文档的创建工作 SAXBuilder DOMBuilder ResultSetBuilder org.JDOM.output 4、输出类,用于文档转换输出 XMLOutputter SAXOutputter DomOutputter JTreeOutputter 使用前注意事项: .........

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值