JAVA从数据库导出数据转换XML

//1。建立jdbc-odbc连接
//2。在定义变量中,写入XML文件路径(在eclipse的编写)
//3。建立数据库(以下DB为Users ),建表(以下表为users)
//4。代码如下
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
public class append {
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO 自动生成方法存根
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");
    }
}
转自:http://hannoi2009.blog.163.com/blog/static/122828428200992111317727/

你可能感兴趣的:(java,eclipse,sql,xml,jdbc)