转载 通过DOM4J将数据库的表转换为XML文档

    实现代码如下:

package com.cjh.dom4j;

import java.io.FileWriter;

import java.io.IOException;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;

import java.util.List;



import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.SAXReader;

import org.dom4j.io.XMLWriter;



public class Students {



public static ResultSet Query(String str){ //返回所查询的数据集

try {

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");

Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=cjh", "sa", "");

Statement stmt=conn.createStatement();

ResultSet rs=stmt.executeQuery(str);

return rs;

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return null;

}



public static void writeXML(Document doc,String xmlName){ //创建XML文档

try {

OutputFormat output=OutputFormat.createPrettyPrint();

output.setEncoding("gb2312");

XMLWriter xmlw=new XMLWriter(new FileWriter(xmlName),output);

xmlw.write(doc);

xmlw.close();

System.out.println("创建成功....");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}



/*

* sql:表示sql语句,要查询的表信息

* rootElementName:表示根元素的名称

* eleElement:表示根元素下的第一个子元素,

* xmlName:表示要保存的xml文件名

*/

public void createXML(String sql,String rootElementName,String eleElement,String xmlName){

//sql="select * from student";

//rootElementName="students";

ResultSet rs=Query(sql); //返回所查询的数据集

try {

if(rs!=null){

Document doc=DocumentHelper.createDocument();

Element eleroot=doc.addElement(rootElementName); //添加根元素

ResultSetMetaData rsmd=rs.getMetaData();

int colshu=rsmd.getColumnCount(); //取得列数

while(rs.next()){ //以下是为子元素添加元素和内容

Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

for(int i=1;i<=colshu;i++){

//String colName=rsmd.getColumnName(i); //取得当前列名

//从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

}

}

// OutputFormat output=OutputFormat.createPrettyPrint();

// output.setEncoding("gb2312");

// XMLWriter xmlw=new XMLWriter(new FileWriter(xmlName),output);

// xmlw.write(doc);

// xmlw.close();

writeXML(doc, xmlName); //调用创建XML文档的方法



}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}



}



/*

* sql:表示sql语句,要查询的表信息

* rootElementName:表示根元素的名称

* eleElement:表示根元素下的第一个子元素,

*/

public void createXML(String sql,String rootElementName,String eleElement){

String xmlName=rootElementName+".xml"; //要保存的文件名

ResultSet rs=Query(sql); //返回所查询的数据集

try {

if(rs!=null){

Document doc=DocumentHelper.createDocument();

Element eleroot=doc.addElement(rootElementName); //添加根元素

ResultSetMetaData rsmd=rs.getMetaData();

int colshu=rsmd.getColumnCount(); //取得列数

while(rs.next()){ //以下是为子元素添加元素和内容

Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

for(int i=1;i<=colshu;i++){

//String colName=rsmd.getColumnName(i); //取得当前列名

//从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

}

}

writeXML(doc, xmlName); //调用创建XML文档的方法

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}



/*

* sql:表示sql语句,要查询的表信息

* rootElementName:表示根元素的名称

* eleElement:表示根元素下的第一个子元素,

*/

public void createXML(String sql,String rootElementName){

String eleElement=rootElementName+"Iterm"; //根元素下的子元素

String xmlName=rootElementName+".xml"; //要保存的文件名

ResultSet rs=Query(sql); //返回所查询的数据集

try {

if(rs!=null){

Document doc=DocumentHelper.createDocument();

Element eleroot=doc.addElement(rootElementName); //添加根元素

ResultSetMetaData rsmd=rs.getMetaData();

int colshu=rsmd.getColumnCount(); //取得列数

while(rs.next()){ //以下是为子元素添加元素和内容

Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

for(int i=1;i<=colshu;i++){

//String colName=rsmd.getColumnName(i); //取得当前列名

//从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

}

}

writeXML(doc, xmlName); //调用创建XML文档的方法

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}



/*

* sql:表示sql语句,要查询的表信息

*/

public void createXML(String sql){

String rootElementName="root"; //根元素

String eleElement=rootElementName+"Iterm"; //根元素下的子元素

String xmlName=rootElementName+".xml"; //保存的xml文档名

ResultSet rs=Query(sql); //返回所查询的数据集

try {

if(rs!=null){

Document doc=DocumentHelper.createDocument();

Element eleroot=doc.addElement(rootElementName); //添加根元素

ResultSetMetaData rsmd=rs.getMetaData();

int colshu=rsmd.getColumnCount(); //取得列数

while(rs.next()){ //以下是为子元素添加元素和内容

Element element=eleroot.addElement(eleElement); //为根元素添加子元素(有多少条记录则有多少子元素)

for(int i=1;i<=colshu;i++){

//String colName=rsmd.getColumnName(i); //取得当前列名

//从子元素中添加元素(列名)和元素的文本(列值) 以下是为子元素添加元素

Element ele=element.addElement(rsmd.getColumnName(i)).addText(rs.getString(i));

}

}

writeXML(doc, xmlName); //调用创建XML文档的方法

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}



public void UpdateXML(int i){

try {

SAXReader reader=new SAXReader();

Document doc=reader.read("student.xml");

List<Element> list=doc.selectNodes("//students/student");

for (Element ele : list) {

//得到名称为age的元素,并取出文本值再加上要修改的数

int age=Integer.parseInt(ele.element("age").getText())+i;

String sage=String.valueOf(age);

ele.element("age").setText(sage); //设置元素age的文本值

}

System.out.println("更新成功...");

writeXML(doc, "student.xml"); //调用创建XML文档的方法

} catch (DocumentException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public static void main(String[] args) {

Students stu=new Students();

String sql="select * from student";

//stu.createXML(sql,"students","student","student.xml");

stu.UpdateXML(10);

}

}

posted @ 2011-09-07 19:41  小0  阅读(272)  评论(0编辑  收藏  举报