| |
注意本系列文件使用环境:oracle数据和jdom1.0版本 总计四篇文件中都使用到以下表和数据。 oracle表结构如下: /*此表中最关键的就是cid和pid两个字段,其它的跟据需要可以增减字段*/ create table scott.company ( cid number(4) not null, /*记录id号*/ cname varchar2(20) not null, /*名字*/ descpt varchar2(40) null, /*描述*/ pid number(4) null /*父id号*/ ); /*向表中插入数据*/ insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 1, ´中南迈特´, ´湖南省长沙市´, 0 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 2, ´系统集成´, ´各种系统集成´, 1 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 3, ´软件开发´, ´软件开发´, 1 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 6, ´netoa开发组´, ´net项目开发´, 3 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 7, ´王军´, ´j2ee组王军´, 5 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 8, ´湘红´, ´j2ee组湘红´, 5 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 9, ´windows集成组´, ´windows系统集成´, 2 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 10, ´linux集成组´, ´linux相关系统集成´, 2 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 11, ´王非´, ´linux组´, 10 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 12, ´张万´, ´netoa组´, 6 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 13, ´李兵´, ´j2ee李兵´, 5 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 14, ´武成´, ´linux组´, 10 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 4, ´人事部´, ´公司人事管理部门´, 1 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 5, ´j2ee项目组´, ´j2ee项目开发´, 3 ); insert into company( company.cid, company.cname, company.descpt, company.pid ) values( 15, ´王义´, ´j2ee组王义´, 5 );
package jing.xml;
/** * <p>title: 从数据库中读取记录集到层叠xml文件</p> * <p>description: </p> * <p>copyright: copyright (c) 2004</p> * <p>company: </p> * @author 欧朝敬 13873195792 * @version 1.0 */
//将数据库表输出为xml文档 import org.jdom.*; import org.jdom.output.*; import java.sql.*; import java.io.*;
public class dbtoxmltree { public string url = null; public connection conn = null; public document document = null; public dbtoxmltree() throws exception { class.forname("oracle.jdbc.driver.oracledriver").newinstance(); url = "jdbc:oracle:thin:@192.168.128.250:1521:sample"; conn = drivermanager.getconnection(url, "scott", "tiger"); }
public void digui(int pid,element element) throws exception { string sql = "select * from company where pid=" + pid; preparedstatement pstmt = conn.preparestatement( sql, resultset.type_scroll_sensitive, resultset.concur_updatable); resultset rs = pstmt.executequery(); resultsetmetadata rmd = rs.getmetadata(); int colcount = rmd.getcolumncount(); while (rs.next()) { element element0 = new element("dstree"); for(int i=1;i<=colcount;i++){ element0.setattribute(rmd.getcolumnname(i), (rs.getstring(i) == null ? "" : rs.getstring(i))); } element0.setattribute("open","false"); element.addcontent(element0); digui(rs.getint("cid"),element0); } rs.close(); pstmt.close();
}
public static void main(string[] args) throws exception { dbtoxmltree dbxml = new dbtoxmltree(); element root=new element("dstreeroot"); dbxml.document=new document(root);//创建文档root元素 preparedstatement pstmt = dbxml.conn.preparestatement( "select * from company order by cid", resultset.type_scroll_sensitive, resultset.concur_updatable); resultset rs = pstmt.executequery();
resultsetmetadata rmd = rs.getmetadata(); int colcount = rmd.getcolumncount(); element elementcol = new element("coltype"); for (int i = 1; i <= colcount; i++) { //列属性 elementcol.setattribute(rmd.getcolumnname(i), rmd.getcolumntypename(i)); } root.addcontent(elementcol); rs.close(); pstmt.close();
dbxml.digui(0,root);
dbxml.conn.close(); xmloutputter outp = new xmloutputter(format.getprettyformat()); //格式华输出,产生缩进和换行 format format = outp.getformat(); format.setencoding("gb2312"); //设置语言 format.setexpandemptyelements(true); //设置输出空元素为<sample></sample>格式 outp.setformat(format);
outp.output(dbxml.document, new fileoutputstream("companytree.xml")); //输出xml文档
system.out.print("xml 文档生成完毕!"); } }
|
|