【3-1】取出数据库中dept表中的全部数据 并生成一个dept.xml的数据

代码目录

【3-1】取出数据库中dept表中的全部数据 并生成一个dept.xml的数据

dept表内容

【3-1】取出数据库中dept表中的全部数据 并生成一个dept.xml的数据

dept表详细信息

【3-1】取出数据库中dept表中的全部数据 并生成一个dept.xml的数据

实验三第一题sql文件.zip

WriteXml.java(使用DOM方式,无需导入xml的相关jar包)

package witersen;

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
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;

public class WriteXml {
    public static final String dbDriver = "com.mysql.cj.jdbc.Driver";
    public static final String dbUrl = "jdbc:mysql://localhost:3306/xml?useSSL=false&serverTimezone=UTC";
    public static final String dbUser = "root";
    public static final String dbPass = "";

    public static void main(String[] args) throws Exception {
        /*数据库操作*/
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        Class.forName(dbDriver);
        conn = DriverManager.getConnection(dbUrl, dbUser, dbPass);
        String sql = "select * from xml.dept";
        pstmt = conn.prepareStatement(sql);
        rs = pstmt.executeQuery();
        /*xml解析操作*/
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.newDocument();
        Element nodes = doc.createElement("nodes");
        doc.appendChild(nodes);
        while (rs.next()) {
            // 建立各个操作节点
            Element node = doc.createElement("node");
            Element deptno = doc.createElement("deptno");
            Element dname = doc.createElement("dname");
            Element loc = doc.createElement("loc");
            // 设置节点内容
            deptno.appendChild(doc.createTextNode(rs.getInt(1) + ""));//通过与字符串相加来转换数字为字符串格式
            dname.appendChild(doc.createTextNode(rs.getString(2)));
            loc.appendChild(doc.createTextNode(rs.getString(3)));
            // 设置节点关系
            node.appendChild(deptno);
            node.appendChild(dname);
            node.appendChild(loc);
            nodes.appendChild(node);
        }
        // 输出文档到文件
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer t = tf.newTransformer();
        t.setOutputProperty(OutputKeys.ENCODING, "GBK");
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("output.xml"));
        t.transform(source, result);
    }

}

原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com

(5)
witersen的头像witersen
上一篇 2020年10月22日 下午8:01
下一篇 2020年10月22日 下午8:09

相关推荐

发表回复

登录后才能评论

评论列表(1条)

  • 匿名的头像
    匿名 2020年10月25日 下午3:11

    写的很好 佩服!