将数据库中表的数据保存到XML文件中

</pre><pre name="code" class="java">package edu.tsinghua.jdbc;
import java.sql.*;
import javax.xml.parsers.*;
import org.apache.crimson.tree.XmlDocument;
import org.w3c.dom.*;
import java.io.*;
/**
 * 从数据库中的Student表中读取数据保存到xml文件中
 * @author admin
 *
 */
public class DBtoXML {
   static Connection con;
   static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
   static String url ="jdbc:sqlserver://localhost:1433;DatabaseName=mytest";
   static String user = "xyn";
   static String password = "xyn";

     
   public static void main(String args[]){
	   Document doc;
	   try{
		   //连接数据库,并且得到数据库中的数据,放在结果集中
		   Class.forName(driver);
		   con = DriverManager.getConnection(url, user ,password);
		   Statement st = con.createStatement();
		   ResultSet rs = st.executeQuery("select * from Student ");
		   
		   //创建document实例对象
		   DocumentBuilderFactory bf = DocumentBuilderFactory.newInstance();
		   DocumentBuilder db = bf.newDocumentBuilder();
		   doc = db.newDocument();
		   
		   //创建根节点
		   Element root = doc.createElement("class");
		   //将根节点与文档对象关联
		   doc.appendChild(root);
		   
		   while(rs!=null&&rs.next()){
			   //创建 student 元素
			   Element  student = doc.createElement("student");
			   root.appendChild(student);
			   //获取数据库中的id值作为student元素的属性 
			   student.setAttribute("id", String.valueOf(rs.getInt("id")));
			   
			   //创建name元素,并取得数据库中对应的name值作为该元素的内容
			   Element nameN = doc.createElement("name");
			   nameN.appendChild(doc.createTextNode(rs.getString("name")));
			   student.appendChild(nameN);
			   
			 //创建password元素,并取得数据库中对应的password值作为该元素的内容
			   Element passwordN = doc.createElement("password");
			   passwordN.appendChild(doc.createTextNode(rs.getString("password")));
			   student.appendChild(passwordN);
			   
			 //创建age元素,并取得数据库中对应的age值作为该元素的内容
			   Element ageN = doc.createElement("age");
			   ageN.appendChild(doc.createTextNode(String.valueOf(rs.getInt("age"))));
			   student.appendChild(ageN);	
			   
			 //创建address元素,并取得数据库中对应的address值作为该元素的内容
			   Element addressN = doc.createElement("address");
			   addressN.appendChild(doc.createTextNode(rs.getString("address")));
			   student.appendChild(addressN);			   
		   }
		   
		   //关闭所有的连接
		   if(rs!=null){
			   rs.close();
			   st.close();
			   con.close();
		   }
		   
		   //将doc中的信息最终以文件的形式保存
		   XmlDocument xmldoc = (XmlDocument)doc;
           File newFile = new File("class.xml");
           FileWriter newFileStream = new FileWriter(newFile);
           xmldoc.write(newFileStream); 
	   }catch(Exception e){
		   e.printStackTrace();
	   }
   }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值