开发者社区> 问答> 正文

eclipse用servet怎样将数据库中的数据导成xml文件

eclipse用servet怎样将数据库中的数据导成xml文件,求源码

展开
收起
蛮大人123 2016-06-17 14:56:53 2160 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    //1。建立jdbc-odbc连接//2。在定义变量中,写入XML文件路径(在eclipse的编写)//3。建立数据库(以下DB为Users ),建表(以下表为users)//4。代码如下

    public class append {
          public static void main(String[] args) {
    try{
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        DocumentBuilder builder=factory.newDocumentBuilder();
        Document doc=builder.parse(args[0]);//记得定义你的XML路径
        doc.normalize();
        Element root = doc.getDocumentElement();
        accessDB(doc,root);
        if(doc != null)
            printNode(root);
        //////////////////////////
        TransformerFactory tf=TransformerFactory.newInstance();
        Transformer transformer=tf.newTransformer();
        DOMSource source=new DOMSource(doc);
        StreamResult result= new StreamResult(new File(args[0]));
        transformer.transform(source,result);
    }catch(Exception e){
        e.printStackTrace();
    }
        }
    
    public static void createXML(Document doc,Element root,ResultSet rs){
        
        try{
            boolean flag=rs.next();
        while(flag){
            Element Users=doc.createElement("Users");
            Element userid=doc.createElement("userid");
            Text userid_text=doc.createTextNode(""+rs.getInt("userid"));
            userid.appendChild(userid_text);
            Element username =doc.createElement("username");
            Text username_text=doc.createTextNode(rs.getString("username"));
            username.appendChild(username_text);
            Element password =doc.createElement("password");
            Text password_text=doc.createTextNode(rs.getString("password"));
            password.appendChild(password_text);
            
            Users.appendChild(userid);
            Users.appendChild(username);
            Users.appendChild(password);
            root.appendChild(Users);
            flag=rs.next();
        }
        }
        catch(SQLException e){
            e.printStackTrace();
        }
    }
    public static void accessDB(Document doc , Element root){
        try{
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn= DriverManager.getConnection("jdbc:odbc:yourBDconName"/*URL*/
                    );
            Statement stmt=conn.createStatement();
            ResultSet rs=stmt.executeQuery("select * from users");
            createXML(doc,root,rs);
            rs.close();
            stmt.close();
            conn.close();
        }catch(Exception e){
            e.printStackTrace();
        }
    }
        public static void printNode(Element element){
            
            NodeList children=element.getChildNodes();
            NamedNodeMap attr=element.getAttributes();
            int r=children.getLength();
            if(attr!=null){
                System.out.print("<"+element.getNodeName());
                for(int j=0;j<attr.getLength();j++)
                {
                    System.out.print(" "+attr.item(j).getNodeName());
                }
                System.out.print(">"+"\n");
            }
            else if(attr==null){
                System.out.print("<"+element.getNodeName()+">");
                
            }
            if(element.hasChildNodes()){
                for(int k=0;k<r;k++)
                {
                    if(children.item(k).getNodeType()==Node.ELEMENT_NODE)
                    printNode((Element)children.item(k));
                    else if(children.item(k).getNodeType()==Node.TEXT_NODE)
                    System.out.println(children.item(k).getNodeValue());
                }
            }
            System.out.print("</"+element.getNodeName()+">"+"\n");
        }
    }
    2019-07-17 19:42:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
2022 DTCC-阿里云一站式数据库上云最佳实践 立即下载
云时代的数据库技术趋势 立即下载
超大型金融机构国产数据库全面迁移成功实践 立即下载

相关镜像