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

    >> Oracle, SQL Server与XML,XML在数据挖掘中的应用, PMML.
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - 高级XML应用『 XML 与 数据库 』 → 如何将数据库中的数据导出成XML文件? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 151968 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 如何将数据库中的数据导出成XML文件? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     woshihuiyuan 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:5
      积分:75
      门派:XML.ORG.CN
      注册:2004/8/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给woshihuiyuan发送一个短消息 把woshihuiyuan加入好友 查看woshihuiyuan的个人资料 搜索woshihuiyuan在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看woshihuiyuan的博客21
    发贴心情 

    我也是刚刚学习xml的
    我实现了将数据库的查询结果保存为xml,写的不规范,不好意思拿出来,希望和大家共同学习
    现在测试将xml文件导入到数据库时,导入三条数据可以,数据量多的时候就报错
    java.lang.IndexOutOfBoundsException: Index: 9 Size: 9
    不知道有那位朋友能帮帮我说明一下为什么
    我用的是Jdom来操作xml的。谢谢了!

    tongxin_botao@hotmail.com

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/8/26 11:01:00
     
     cgp1996 帅哥哟,离线,有人找我吗?
      
      
      等级:大二(研究C++)
      文章:43
      积分:227
      门派:XML.ORG.CN
      注册:2004/9/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给cgp1996发送一个短消息 把cgp1996加入好友 查看cgp1996的个人资料 搜索cgp1996在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看cgp1996的博客22
    发贴心情 
    用vc可以吗?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/9/17 12:56:00
     
     hf200012 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:69
      门派:XML.ORG.CN
      注册:2004/10/14

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hf200012发送一个短消息 把hf200012加入好友 查看hf200012的个人资料 搜索hf200012在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hf200012的博客23
    发贴心情 
    很好做啊,我用java做了一个东西,就是将数据库导成xml文件,在将xml文件导到数据库中
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/11/5 16:38:00
     
     wenmier 美女呀,离线,快来找我吧!
      
      
      等级:大二(研究C++)
      文章:37
      积分:262
      门派:XML.ORG.CN
      注册:2004/6/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给wenmier发送一个短消息 把wenmier加入好友 查看wenmier的个人资料 搜索wenmier在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看wenmier的博客24
    发贴心情 
    IBM上的教程我现在访问说不存在了呀,谁有?能不能给我一份,非常感谢!
    我的EMAIL:superwm_9@hotmail.com
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/24 9:30:00
     
     s02r307 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:68
      门派:XML.ORG.CN
      注册:2004/4/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给s02r307发送一个短消息 把s02r307加入好友 查看s02r307的个人资料 搜索s02r307在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看s02r307的博客25
    发贴心情 
    为什么发不上,辛苦写了半天,结果出错。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/28 1:08:00
     
     s02r307 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:2
      积分:68
      门派:XML.ORG.CN
      注册:2004/4/17

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给s02r307发送一个短消息 把s02r307加入好友 查看s02r307的个人资料 搜索s02r307在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看s02r307的博客26
    发贴心情 
    写了一个程序,两个功能
    1,用jdbc从db中读出数据,再用dom写入到xml文档
    2,用dom遍历转换所得的xml文档,写入到数据库中

    在access下,测试成功。

    存在问题;
    本来设计目标是对任意数据库转换为xml,但在转换sql server为xml文档时总出错。
    不知什么原因,请教高手指点。

    xml结构:
    <database database_name="" dbms_name="">
      <table tabla_name="">
         <recorder ...

    以下是db2xml的源程序;先谢了!

    package dbxml;


    import org.w3c.dom.Attr;
    import org.w3c.dom.Document;
    import org.w3c.dom.DOMImplementation;
    import org.w3c.dom.DocumentType;
    import org.w3c.dom.Element;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult;
    import org.eclipse.swt.widgets.List;
    import java.io.FileOutputStream;
    import java.sql.*;

    public class Db2XML {

     Connection connect; //connect to the database
     Statement sql;
     String[] att,ele;
     int attnum,elenum;

     ResultSet rsc;
     ResultSetMetaData rsmd;
     String attdata,databasename;
     DatabaseMetaData dbmd;
     
     public Db2XML(String dbname,Connection connection) {
      databasename=dbname;
      connect=connection;

     }
     //*******TABLE Tag********
      
     public boolean TableExist(String tname){
      for (int m=0;m<attnum;m++){    
       int index=att[m].indexOf(".");
       if(att[m].substring(0,index).equals(tname))
       {
        return true;   
       }
      }
      for (int n=0;n<elenum;n++){
       int index=ele[n].indexOf(".");
       if(ele[n].substring(0,index).equals(tname))
                {
        return true;
       }
      }
      return false;
     }

     public void WriteTable(String f,List selectatt,List selectele) throws Exception
     {
      att=selectatt.getItems();
      ele=selectele.getItems();
            attnum=selectatt.getItemCount();
            elenum=selectele.getItemCount();
            
            dbmd = connect.getMetaData();
            String SYSTEM_ID = "db.dtd";
            
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      DOMImplementation domImpl = builder.getDOMImplementation();

      ////////////////////////////////////////////
      DocumentType docType = domImpl.createDocumentType("DATABASE",
                    null,
                    SYSTEM_ID);
      Document dtddocument = domImpl.createDocument("", "DATABASE", docType);

      
      //root
      Document document = domImpl.createDocument("", "DATABASE", null);
      Element root = document.getDocumentElement();
      
      //root
      Attr rootattr1=document.createAttribute("DATABASE_NAME");
      rootattr1.setValue(databasename);
      root.setAttributeNode(rootattr1);
      
      //root DBMS
      Attr rootattr2=document.createAttribute("DBMS_NAME");
      rootattr2.setValue(dbmd.getDatabaseProductName());
      root.setAttributeNode(rootattr2);
      
      try {
       ResultSet rst;
       //DatabaseMetaData dbmd;
       //dbmd = connect.getMetaData();
       String[] type = { "table" };
       String tablename;
       rst = dbmd.getTables(null, null, null, type);

       
       while (rst.next()) {
        tablename = rst.getString("TABLE_NAME");
        if(TableExist(tablename)){
                        //table tag
         Element child1 = document.createElement("TABLE");

         //table tag table
         Attr attr=document.createAttribute("TABLE_NAME");
         attr.setValue(tablename);
         child1.setAttributeNode(attr);
         WriteColumn(document,child1,tablename);
                    
         root.appendChild(child1);
         int i=0;
         i++;
         System.out.print(i);
        }
       }
       rst.close();
       
      } catch (Exception e) {
       System.out.println(e.getMessage()+"rst");
      }
      //the foot of tablename    
      //attnum=0;
      TransformerFactory transFactory = TransformerFactory.newInstance();
      Transformer transformer = transFactory.newTransformer();
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
            transformer.setOutputProperty(OutputKeys.METHOD, "xml");
            transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, SYSTEM_ID);
            //transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, PUBLIC_ID);


      DOMSource source = new DOMSource(document);
      FileOutputStream os = new FileOutputStream(f);
      StreamResult result = new StreamResult(os);
      transformer.transform(source, result);
     }
     public void WriteColumn(Document document,Element child1,String tablename)
     {
      try {
       ResultSet rsc;
       //ResultSetMetaData rsmd;
       sql = connect.createStatement();
       rsc = sql.executeQuery("SELECT * FROM " + tablename);
                
       ResultSet rscinfo;
       rscinfo=dbmd.getColumns(null,null,tablename,"%");

       //****************************************************
       //******TABLE TAG DataType******************
       //****************************************************
       
       //DataType tag
       Element child1_0 = document.createElement("DataType");
       
       //DataType TAG
       while(rscinfo.next()){
        //DataType
        Element child1_0_1 =document.createElement(rscinfo.getString("COLUMN_NAME"));
        
        //DATA_TYPE
        Attr attr1=document.createAttribute("DATA_TYPE");
        attr1.setValue(rscinfo.getString("DATA_TYPE"));
        child1_0_1.setAttributeNode(attr1);
        
                    //DATA_TYPE
        Attr attr2=document.createAttribute("TYPE_NAME");
        attr2.setValue(rscinfo.getString("TYPE_NAME"));
        child1_0_1.setAttributeNode(attr2);
        
                    //DATA_TYPE
        Attr attr3=document.createAttribute("COLUMN_SIZE");
        attr3.setValue(rscinfo.getString("COLUMN_SIZE"));
        child1_0_1.setAttributeNode(attr3);
        
                    //DATA_TYPE
        Attr attr4=document.createAttribute("NULLABLE");
        attr4.setValue(rscinfo.getString("NULLABLE"));
        child1_0_1.setAttributeNode(attr4);
        
                    //DATA_TYPE
        //Attr attr5=document.createAttribute("REMARKS");
        //attr5.setValue(rscinfo.getString(2));
        //child1_0_1.setAttributeNode(attr5);
        
        //child1_0_1.appendChild(document.createTextNode(rscinfo.getString(6)+"("+rscinfo.getString("COLUMN_SIZE")+")"));
        child1_0.appendChild(child1_0_1);
       }
       //rscinfo.deleteRow();
      
       rscinfo.close();
       child1.appendChild(child1_0);
       
       //*****************************************************
       //******TABLE TAGNI RECORDER******************
       //*****************************************************
       while (rsc.next()) {
       
       //RECORDER tag
       Element child1_1 = document.createElement("RECORDER");
       
       //*******Recorder************
       for (int m=0;m<attnum;m++){
        int index=att[m].indexOf(".");
        if(att[m].substring(0,index).equals(tablename))
        {
         Attr attr=document.createAttribute(att[m].substring(att[m].indexOf(".")+1));
                        attdata=rsc.getString(att[m].substring(att[m].indexOf(".")+1));
         attr.setValue(attdata);
         child1_1.setAttributeNode(attr);    
        }
       }
       
                //*******Recorder************
       for (int n=0;n<elenum;n++){
        int index=ele[n].indexOf(".");
        if(ele[n].substring(0,index).equals(tablename))
                    {
         Element child1_1_1 =document.createElement(ele[n].substring(ele[n].indexOf(".")+1));
             
         //Text data=document.createTextNode(rsc.getString(ele[n].substring(ele[n].indexOf(".")+1)));
            //child1_1_1.setData(rsc.getString(ele[n].substring(ele[n].indexOf(".")+1)));
         child1_1_1.appendChild(document.createTextNode(rsc.getString(ele[n].substring(ele[n].indexOf(".")+1))));
         
         child1_1.appendChild(child1_1_1);                    
        }

       }                        
       child1.appendChild(child1_1);   

          }//the end of while (rsc.next())
       //rsc.deleteRow();
       rsc.close();
       
      }//the end of try
       catch (Exception e) {
       System.out.println(e.getMessage()+"ggg");
      }
     } //the end of public void writecolumn
    }

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2004/12/28 1:19:00
     
     why_walk 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:0
      积分:55
      门派:XML.ORG.CN
      注册:2004/11/13

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给why_walk发送一个短消息 把why_walk加入好友 查看why_walk的个人资料 搜索why_walk在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看why_walk的博客27
    发贴心情 ADO的Recordset就可以啊
    Save 方法 (ADO Recordset)
          

    将 Recordset 保存(持久)在文件中。

    语法

    recordset.Save FileName, PersistFormat

    参数

    FileName   可选。文件的完整路径名,用于保存 Recordset。

    PersistFormat   可选。PersistFormatEnum 值,指定保存 Recordset 所使用的格式。可以是如下的某个常量:

    常量 说明
    adPersistADTG (默认)使用专用的“Advanced Data Tablegram”格式保存。
    adPersistXML 使用 XML 格式保存。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/1/12 8:37:00
     
     ssp314 帅哥哟,离线,有人找我吗?魔羯座1980-1-1
      
      
      等级:大一新生
      文章:4
      积分:77
      门派:W3CHINA.ORG
      注册:2004/10/22

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给ssp314发送一个短消息 把ssp314加入好友 查看ssp314的个人资料 搜索ssp314在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看ssp314的博客28
    发贴心情 
    jian yi yong yi xia JDOM
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/5 8:09:00
     
     bolang9398 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:95
      门派:XML.ORG.CN
      注册:2005/5/6

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给bolang9398发送一个短消息 把bolang9398加入好友 查看bolang9398的个人资料 搜索bolang9398在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看bolang9398的博客29
    发贴心情 
    好好学习啊!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/6 21:45:00
     
     d_hao20@ustc.edu 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:101
      积分:726
      门派:XML.ORG.CN
      注册:2005/4/28

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给d_hao20@ustc.edu发送一个短消息 把d_hao20@ustc.edu加入好友 查看d_hao20@ustc.edu的个人资料 搜索d_hao20@ustc.edu在『 XML 与 数据库 』的所有贴子 引用回复这个贴子 回复这个贴子 查看d_hao20@ustc.edu的博客30
    发贴心情 
    xml操作数据库很慢吗?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2005/5/8 13:31:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XML 与 数据库 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/5/20 3:48:59

    本主题贴数64,分页: [1] [2] [3] [4] [5] [6]... [7]

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