新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → 使用JDOM操作XML系列文章一     从数据库中读取记录集到层叠式XML文 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 7918 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 使用JDOM操作XML系列文章一     从数据库中读取记录集到层叠式XML文 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     卷积内核 帅哥哟,离线,有人找我吗?
      
      
      威望:8
      头衔:总统
      等级:博士二年级(版主)
      文章:3942
      积分:27590
      门派:XML.ORG.CN
      注册:2004/7/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给卷积内核发送一个短消息 把卷积内核加入好友 查看卷积内核的个人资料 搜索卷积内核在『 XML 与 数据库 』的所有贴子 访问卷积内核的主页 引用回复这个贴子 回复这个贴子 查看卷积内核的博客楼主
    发贴心情 使用JDOM操作XML系列文章一     从数据库中读取记录集到层叠式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;

    //将数据库表输出为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 文档生成完毕!");
    }
    }


       收藏   分享  
    顶(0)
      




    ----------------------------------------------
    事业是国家的,荣誉是单位的,成绩是领导的,工资是老婆的,财产是孩子的,错误是自己的。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/10/10 10:17:00
     
     52bb 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:4
      积分:75
      门派:XML.ORG.CN
      注册:2005/10/21

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给52bb发送一个短消息 把52bb加入好友 查看52bb的个人资料 搜索52bb在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看52bb的博客2
    发贴心情 
    写的非常清晰,感觉类设计的很合理,我会参照您提供的例子学习的,会换一下数据库,呵呵。今天要把里面的知识点弄清楚,谢谢内核。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/11/6 12:58:00
     
     nmgyjw 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:56
      积分:275
      门派:XML.ORG.CN
      注册:2005/12/20

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给nmgyjw发送一个短消息 把nmgyjw加入好友 查看nmgyjw的个人资料 搜索nmgyjw在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看nmgyjw的博客3
    发贴心情 
    下去实践一下呀!谢谢了。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/21 8:26:00
     
     jelver 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:73
      门派:XML.ORG.CN
      注册:2004/9/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给jelver发送一个短消息 把jelver加入好友 查看jelver的个人资料 搜索jelver在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看jelver的博客4
    发贴心情 
    很不错,收了!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/12/29 10:28:00
     
     liangchenshell 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:77
      门派:XML.ORG.CN
      注册:2006/4/4

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给liangchenshell发送一个短消息 把liangchenshell加入好友 查看liangchenshell的个人资料 搜索liangchenshell在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看liangchenshell的博客5
    发贴心情 
    thank you!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/4/4 16:10:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/17 4:12:36

    本主题贴数5,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    78.125ms