association

          使用JDOM操作XML系列文章一

           
          使用JDOM操作XML系列文章一 從數據庫中讀取記錄集到層疊式XML文

          注意本系列文件使用環境: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 文檔生成完畢!");
          }
          }
          摘自:
          http://www.timihome.net/html/java/java_j2ee/20070625/3821.html

          posted on 2008-03-07 17:41 揚揚 閱讀(258) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           

          導航

          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 象州县| 宝山区| 正安县| 时尚| 宜兰市| 襄城县| 陈巴尔虎旗| 山东| 分宜县| 奉节县| 襄垣县| 胶州市| 临桂县| 璧山县| 封丘县| 克拉玛依市| 通许县| 湖北省| 长岛县| 正蓝旗| 外汇| 文山县| 鹤山市| 上高县| 清涧县| 青阳县| 永寿县| 晴隆县| 交口县| 宣威市| 滨州市| 青龙| 通州市| 松溪县| 肇庆市| 西安市| 阿勒泰市| 辉南县| 郧西县| 鄄城县| 灵台县|