博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA中 XML与数据库互转 学习笔记三
阅读量:2222 次
发布时间:2019-05-08

本文共 9276 字,大约阅读时间需要 30 分钟。

要求

    • 必备知识

      JAVA基础知识,XML基础知识,数据库的基本操作。

    • 开发环境

      MyEclipse10/MySql5.5

    • 资料下载

 

数据库在数据查询,修改,保存,安全等方面与其他数据处理手段有绝对的优势,而XML文件是基于标记的文本文件,兼容性好,便于组织,解析和交换数据。在某些情况下我们需要讲XML数据导入到数据库中,发挥数据库在管理数据方面的优势;另一方面,我们需要讲数据库中的数据导入到XML文件中,以便与其它系统交互数据,发挥XML文件在数据交换上的优势。下我介绍普通DOM和Dom4J,两种方式实现 XML和数据库 互转。

 

Dom4j实现XML与数据库互转:

英语六级词汇

 

数据库Sql代码:

 

dom4j(如对dom4j不了解可以点击)将xml数据导入到数据库中:XMLToDatabase.java

import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;public class XMLToDatabase {                                    public static void toDatabase(){                Connection connection=null;        PreparedStatement statement=null;        ResultSet rs=null;        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();        String sql="INSERT INTO `xmlanddb`.`dict` (`id`, `word`, `meaning`, `lx`) VALUES (NULL, ?, ?, ?);";        try {            statement=connection.prepareStatement(sql);        } catch (SQLException e1) {            // TODO Auto-generated catch block            e1.printStackTrace();        }                        Document document=Dom4j.load("dict.xml");        Element root=Dom4j.getRootElement(document);        List words = root.elements("word"); //word节点列表              String wordStr="",meaningStr="",lxStr="";        for (Iterator i = words.iterator(); i.hasNext();) {                                  Element word= (Element) i.next(); //单个word节点                                        for(Iterator k=word.elementIterator();k.hasNext();){  //遍历 name mean lx节点                             Element element = (Element) k.next();                             if(element.getName().equals("name")){                            wordStr=element.getText();                                                    }                        if(element.getName().equals("mean")){                            meaningStr=element.getText();                        }                        if(element.getName().equals("lx")){                            lxStr=element.getText();                        }                          }                                      try {                                            statement.setString(1,wordStr);                        statement.setString(2,meaningStr);                        statement.setString(3,lxStr);                        statement.executeUpdate();                                            } catch (SQLException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                    }                               }              JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);    }            public static void main(String[] args){        toDatabase();    }                }

 

dom4j(如对dom4j不了解可以点击)将数据库中记录导入到xml文件中:DatabaseToXML.java

import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter;public class DatabaseToXML {        public static void toXML(){                        Connection connection=null;        PreparedStatement statement=null;        ResultSet rs=null;        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();        String sql="SELECT * FROM  `dict`";                         Document document = DocumentHelper.createDocument();               Element root = document.addElement("dict");// 创建根节点                              try {            statement=connection.prepareStatement(sql);            rs=statement.executeQuery();            while(rs.next()){                                Element word = root.addElement("word");                      Element name = word.addElement("name");                    name.setText(rs.getString("word"));                    Element mean=word.addElement("mean");                          mean.addCDATA(rs.getString("meaning"));                    Element lx=word.addElement("lx");                        lx.addCDATA(rs.getString("lx"));                                    }            XMLWriter writer=new XMLWriter(new FileWriter(new File("dict2.xml")));             writer.write(document);            writer.close();        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }            }        public static void main(String[] args) {        // TODO Auto-generated method stub        toXML();    }}

 

 

普通Dom(java中dom解析器不了解可以点击)实现XML与数据库互转:

student2.xml

 

Sql代码:

Dom(java中dom解析器不了解可以点击)将xml数据导入到数据库中:XMLToDatabaseWithDom.java

import java.io.File;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;/** * 讲XML文件导入到数据库 * @author licheng * */public class XMLToDatabaseWithDom {                    /**     * 讲 学生XML文件导入到数据库中     */    public void toDatabase(){        Connection connection=null;        PreparedStatement statement=null;        ResultSet rs=null;        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();        String sql="INSERT INTO `xmlanddb`.`student` (`number`, `name`, `date`, `height`) VALUES (?,?,?,?);";        try {                statement=connection.prepareStatement(sql);            DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();            factory.setIgnoringElementContentWhitespace(true);  //忽略空白缩进            DocumentBuilder domParser=factory.newDocumentBuilder();            Document document=domParser.parse(new File("student2.xml")); //通过已经存在的文件创建Document对象            Element root=document.getDocumentElement();            NodeList list1=root.getElementsByTagName("学号");            NodeList list2=root.getElementsByTagName("姓名");            NodeList list3=root.getElementsByTagName("出生日期");            NodeList list4=root.getElementsByTagName("身高");            int size=list1.getLength(); //获取长度            String[] number=new String[4];            String[] name=new String[4];            String[] date=new String[4];            double[] height=new double[4];            for(int k=0;k

 

Dom(java中dom解析器不了解可以点击)将数据库中记录导入到xml文件中:DatabaseToXMLWithDom.java

import java.io.File;import java.io.FileOutputStream;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;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.Node;public class DatabaseToXMLWithDom {                public void toXML(){                                /**         * 讲数据记录存入到数组中         */        String[] number={""};        String[] name={""};        String[] date={""};        String[] height={""};        Connection connection=null;        PreparedStatement statement=null;        ResultSet rs=null;        connection=JDBCUtilSingle.getInitJDBCUtil().getConnection();        String sql="SELECT * FROM `student` ";        try {            statement=connection.prepareStatement(sql);            rs=statement.executeQuery();            rs.last(); //讲游标移到结果集的最后一行            int recordAmount=rs.getRow(); //获取记录数据            number=new String[recordAmount];            name=new String[recordAmount];            date=new String[recordAmount];            height=new String[recordAmount];            int k=0;            rs.beforeFirst(); //讲游标移到第一条记录前            while(rs.next()){                number[k]=rs.getString(1);                name[k]=rs.getString(2);                date[k]=rs.getString(3);                height[k]=String.valueOf(rs.getDouble(4));                k++;            }        } catch (SQLException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } finally{            JDBCUtilSingle.getInitJDBCUtil().closeConnection(rs, statement, connection);        }                                /**         * 将数据导入到XML文件         */        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();        factory.setIgnoringElementContentWhitespace(true);  //忽略空白缩进        DocumentBuilder domParser;        try {            domParser = factory.newDocumentBuilder();            Document document=domParser.newDocument(); //通过调用newDocument() 方法获取实例            document.setXmlVersion("1.0"); //设置 xml版本号            Element root=document.createElement("学生信息");            document.appendChild(root);            for(int k=0;k

相关内容,请查看:

 

作者:
出处:
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/Li-Cheng/p/3610474.html

你可能感兴趣的文章
学习网站汇总
查看>>
【Loadrunner】性能测试报告实战
查看>>
【自动化测试】自动化测试需要了解的的一些事情。
查看>>
【selenium】selenium ide的安装过程
查看>>
【手机自动化测试】monkey测试
查看>>
【英语】软件开发常用英语词汇
查看>>
Fiddler 抓包工具总结
查看>>
【雅思】雅思需要购买和准备的学习资料
查看>>
【雅思】雅思写作作业(1)
查看>>
【雅思】【大作文】【审题作业】关于同不同意的审题作业(重点)
查看>>
【Loadrunner】通过loadrunner录制时候有事件但是白页无法出来登录页怎么办?
查看>>
【English】【托业】【四六级】写译高频词汇
查看>>
【托业】【新东方全真模拟】01~02-----P5~6
查看>>
【托业】【新东方全真模拟】03~04-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST05~06-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST09~10-----P5~6
查看>>
【托业】【新东方托业全真模拟】TEST07~08-----P5~6
查看>>
solver及其配置
查看>>
JAVA多线程之volatile 与 synchronized 的比较
查看>>
Java集合框架知识梳理
查看>>