Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >java解析xml文档并保存到数据库

java解析xml文档并保存到数据库

作者头像
全栈程序员站长
发布于 2022-09-02 08:37:12
发布于 2022-09-02 08:37:12
1.6K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

java解析xml文档并保存到数据库:

sadf

说明:用xml文档简单写一份新闻如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<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文件使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 block
			e.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 block
					e.printStackTrace();
				}
    }
    
    public void close(){
    try {
    	if(rs!=null){
    		rs.close();
    		ps.close();
			conn.close();
    	}
    } catch (Exception e) {
				// TODO Auto-generated catch block
				e.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 block
					e.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 block
			e.printStackTrace();
		}
    	return rs;
    }

}

database1.properties文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#database name
DBName=newsxml
#database localhost
DBHost=127.0.0.1
#database username
DBUser=root
#database password
DBPwd=root
#database number of port
Port=3306
#database type 1-mysql,2-sqlserver
DBType=1

新闻类:News

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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接口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.hkd.service;

import com.hkd.entity.News;

public interface NewsDao {
	int add(News n);

}

XmlService类:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 block
				e.printStackTrace();
			}
			
		return listnode;
	}
}

实现类NewsDaoImpl:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 {

	@Override
	public 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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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说明已经成功添加数据库。

数据库数据如图:

再次执行入口类,重新添加一次数据库数据更新为:

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139702.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
python连接数据库
简介: PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。
GeekLiHua
2025/01/21
1570
python连接数据库
java 自动创建数据库,安装web项目的类
package com.kaigejava.cms; import static com.kaigejava.common.web.Constants.UTF8; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.sql.Connection; import java.sql.DriverMa
凯哥Java
2019/06/30
9620
SpringBoot 实现动态数据源切换
Spring Boot + Mybatis Plus + Druid + MySQL 实现动态数据源切换及动态 SQL 语句执行。
默存
2022/06/24
2.1K0
java 读取xml
​ 1.DB.java package com.bn.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.Iterator; import ja
FHAdmin
2021/06/24
2.3K0
java通过JDBC连接数据库及增删改查操作
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158717.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
9890
java通过JDBC连接数据库及增删改查操作
脚本一键检测数据库以及数据库表的大小
上代码:\ #!/bin/bash #author: xiao白 #date: 2015-11-11 #qq: 530035210 #blog: https://my.oschina.net/pwd/blog  #查询数据库以及数据库表的大小    logdir=/data/log/shell          #日志路径 log=$logdir/log.log            #日志文件  is_font=1                #终端是否打印日志: 1打印 0不打印  is_log=1 
明哥的运维笔记
2019/01/30
6150
Java——数据库编程JDBC之快速入门吐血总结及各关键对象详解(提供了JDBCUtils工具类)
JDBC,Java Database Connectivity,Java数据库连接,Java语言操作数据库。JDBC的本质是SUN公司定义的一套操作所有关系型数据库的规则,即接口,各数据库厂商实现这套接口,提供数据库驱动jar包,用户可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
Winter_world
2020/09/25
5160
Java——数据库编程JDBC之快速入门吐血总结及各关键对象详解(提供了JDBCUtils工具类)
java实现“数据平滑升级”
详情使用升级脚本步骤请看文档《4.6升级到4.7说明.docx》+ 部分数据平滑升级4.6升4.7升级流程图.png,文档和升级包可上我的资源中免费进行下载。
刘大猫
2024/11/03
640
【数据库_04】JDBC
一、什么是JDBC 1. JDBC概念 ① 官方 * JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API 可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。 ② 个人理解 * JDBC就是定义了一组操作关系型数据库的接口。 2. 一个示例 import java.sql.Connection; import java.sql.DriverManager; import java.s
用户8250147
2021/02/04
3400
购物车的实现(jsp的session+Java的Map的结合)
1:电商如此发达的现在,作为一个web开发程序猿,如果不会写购物车,真是有点不好意思找工作。所以抓紧练习啊,从上篇博客中抽离出如何实现购物车的功能。 2:首先需要理解购物车实现的一些基本步骤。   2
别先生
2018/01/02
5K1
购物车的实现(jsp的session+Java的Map的结合)
在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法
先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填...
书童小二
2018/09/03
4.2K0
JDBC从0到1的学习 (提供JDBC 工具类,数据库连接池工具类)
也就是,jdbc是基准,其他公司,比如mysql,oracle这些公司,基于这个jdbc基本,封装jdbc基准里面的api,变为自己的,也就是变为自己的东西,这个就是驱动类;
一写代码就开心
2022/05/14
7200
JDBC从0到1的学习 (提供JDBC 工具类,数据库连接池工具类)
JDBC数据库的增删改查简单操作
前言 本次带来的是JAVA的JDBC操作,对数据库进行发送SQL语句,以达到对数据库语言的增删改查操作 需要下载驱动类包 MySQL数据库的JDBC驱动包 https://dev.mysql.com
HcodeBlogger
2020/07/14
1.2K0
简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统
jsp+Servlet图书管理系统第一版的第一次更新:免费源码下载,停更,自行下载即可,谢谢:http://download.csdn.net/detail/biexiansheng/9877270
别先生
2020/06/23
11.8K0
简易图书管理系统(主要是jsp+servlet的练习),基于jsp+servlet的图书管理系统
xml与数据库中数据的导入导出
这是我一个晚上做出来的,因为要去做其他的项目,所以只实现了对特定数据库的xml操作,不过我觉得这是学习xml挺不错的参考代码和文档
SmileNicky
2019/01/17
3.2K0
struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
  其实学习框架,就是为了可以很好的很快的完成我们的需求,而学习struts2只是为了替代之前用的servlet这一层,框架使开发更加简单,所以作为一个小菜鸟,特别感谢那些超级无敌变态开发的框架供我们
别先生
2018/01/02
1.2K0
struts2使用拦截器完成登陆显示用户信息操作和Struts2的国际化
Java工具集-JDBCUtils
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/10
1K0
Java学习之JDBC篇
在一些web开发或者是数据存储的时候,肯定会使用到数据库来进行数据存储。 而在Java里面需要调用JDBC来对数据库进行操作。
全栈程序员站长
2022/07/13
3410
java反射小样例
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/118290.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/13
2200
java反射小样例
java mysql redis数据库操作
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
多凡
2019/11/01
1.9K0
相关推荐
python连接数据库
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验