java解析xml文档并保存到数据库
来源:互联网 发布:异次元的软件世界 编辑:程序博客网 时间:2024/05/17 17:56
java解析xml文档并保存到数据库:
sadf
说明:用xml文档简单写一份新闻如下:
<root><news><title>洛阳未来一周将持续高温天气</title><author>中国气象局</author><content>洛阳未来一周将持续高温天气,局部地区温度高达39度!请大家做好防范高温,谨防中暑!</content></news><news><title>河南科技大学跻身世界顶尖大学</title><author>中国教育网</author><content>据权威机构综合测评之后,河南科技大学全世界排名超前,成功跻身世界顶尖大学!</content></news><news><title>洛阳牡丹甲天下</title><author>中国旅游网</author><content>洛阳牡丹甲不是吹牛逼的!不信你看!</content></news></root>
设计数据库:
如图:
代码功能实现设计:
框架:
说明:dom4j-jar包和数据库连接jar包自行到官网下载
BaseDao结合database1.properties文件使用:
package com.hkd.base;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.Properties;public class BaseDao {String DBUser;//用户名 String DBHost;//地址 String DBPwd;//密码 String DBName;//数据库名 int Port;//端口 int DBType;//数据库类型:1-mysql ,2-sqlserver Connection conn;//创建连接对象 PreparedStatement ps;//创建查询对象 public ResultSet rs;//创建结果集 public BaseDao(){ Properties pro = new Properties(); InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("database1.properties"); try {pro.load(is);DBUser=pro.getProperty("DBUser");DBHost=pro.getProperty("DBHost");DBPwd=pro.getProperty("DBPwd");DBName=pro.getProperty("DBName");Port=Integer.parseInt(pro.getProperty("Port"));DBType=Integer.parseInt(pro.getProperty("DBType"));pro.clear();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} } public void open(){ try { if(DBType==1){ Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://"+DBHost+":"+Port+"/"+DBName, DBUser, DBPwd); }else if(DBType==2){ Class.forName("com.microsoft.sqlserver.sqlserverDriver"); conn=DriverManager.getConnection("jdbc:sqlserver://"+DBHost+":"+Port+";database="+DBName, DBUser, DBPwd); } } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} } public void close(){ try { if(rs!=null){ rs.close(); ps.close();conn.close(); } } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} } public int excuteUpdate(String sql,Object...parm){ open(); int a=0; try { ps=conn.prepareStatement(sql); if(parm!=null){ for(int i=0;i<parm.length;i++){ps.setObject(i+1, parm[i]); } } a=ps.executeUpdate(); close(); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} return a; } public ResultSet excuteQuery(String sql,Object [] parm){ open(); try { ps=conn.prepareStatement(sql); if(parm!=null){ for(int i=0;i<parm.length;i++){ ps.setObject(i+1, parm[i]); } } rs=ps.executeQuery(); } catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();} return rs; }}
database1.properties文件:
#database nameDBName=newsxml#database localhostDBHost=127.0.0.1#database usernameDBUser=root#database passwordDBPwd=root#database number of portPort=3306#database type 1-mysql,2-sqlserverDBType=1
新闻类:News
package com.hkd.entity;public class News {String title;String author;String content;public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}
NewsDao接口:
package com.hkd.service;import com.hkd.entity.News;public interface NewsDao {int add(News n);}
XmlService类:
package com.hkd.service;import java.util.ArrayList;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import com.hkd.entity.News;public class XmlService {public List<News> getNews(String path){//解析 SAXReader reader = new SAXReader(); List<News> listnode = new ArrayList<News>();try { Document doc = reader.read(path);Element root=doc.getRootElement();//获取根节点 System.out.println(root.getName());//打印根节点root List<Element> list = root.elements();//所有root下第一子节点存进一个集合中 //遍历节点 for (Element e : list) { News n = new News();//放在循环里面,循环完一个后接着下一个System.out.println(e.getName());//获取根结点下第一根子节点n.setTitle(e.elementText("title"));n.setAuthor(e.elementText("author"));n.setContent(e.elementText("content"));listnode.add(n);} } catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}return listnode;}}
实现类NewsDaoImpl:
package com.hkd.serviceimpl;import com.hkd.base.BaseDao;import com.hkd.entity.News;import com.hkd.service.NewsDao;public class NewsDaoImpl extends BaseDao implements NewsDao {@Overridepublic int add(News n) {String sql = "insert into news values(null,?,?,?)";Object[] parm = {n.getTitle(),n.getAuthor(),n.getContent()};int a = excuteUpdate(sql, parm);return a;} }入口类:Main
package com.hkd.main;import java.util.List;import com.hkd.entity.News;import com.hkd.service.NewsDao;import com.hkd.service.XmlService;import com.hkd.serviceimpl.NewsDaoImpl;public class Main {/** * @param args */public static void main(String[] args) {XmlService xs = new XmlService();NewsDao nd = new NewsDaoImpl();List<News> list = xs.getNews("E:\\AA\\news.xml");int a=0;for (News news : list) {a+= nd.add(news);}if(a==3){System.out.println("sucess");}else{System.out.println("error");}}}控制台输出:
root
news
news
news
sucess
说明:第一个root说明输出了xml文档中的根节点root(根节点只有一个)
接着三个news是root的单个第一子节点
最后一个sucess是在main方法中判断是否成功添加数据库。
sucess说明已经成功添加数据库。
数据库数据如图:
再次执行入口类,重新添加一次数据库数据更新为:
阅读全文
1 0
- java解析xml文档并保存到数据库
- 用linq解析xml文档保存到sqlserver数据库
- PLSQL解析JSON,并保存到数据库
- 创建XML文档并保存到磁盘文件中(GBK)
- 创建XML文档并保存到字符串(String)
- java中解析xml文件保存数据库
- 编辑并保存XML文档
- java实现excel文件上传并解析内容保存到数据库中
- java 取到xml文件,并解析
- Gson轻松解析json数据并保存到Sqlite数据库
- 上传,解析Excel文件并保存数据到数据库
- 利用dom4j 解析xml 文档并将数据存入数据库
- java实现xml文件读取并保存到对象
- 解析XML文档,并把数据存到数据库中
- DOM解析XML文件并添加到数据库中
- Java解析XML文档
- JAVA 解析XML文档
- java解析xml文档
- 动态规划
- http协议相关介绍
- 安卓5.0.2源码编译错误
- C++命名空间(namespace)
- asp.net mvc中GDI+中发生一般性错误的解决办法
- java解析xml文档并保存到数据库
- 机器学习笔记二十一 神经网络(未整理完)
- 安装vmare-tools—实现ubuntu与windows的互相复制与粘贴(无需共享文件夹)
- 教你如何阅读Oracle数据库官方文档
- BZOJ
- codeforces 296B
- 修改 input[type=checkbox] 默认样式
- HDU
- 机器学习----numpy矢量化编程