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

java解析xml文档并保存到数据库java解析xml文档并保存到数据库:sadf说明:用xml文档简单写一份新闻如下:洛阳未来一周将持续高温天气中国气象局洛阳未来一周将持续高温天气,局部地区温度高达39度!请大家做好防范高温,谨防中暑!河南科技大学跻身世界顶尖大学中国教育网据权威机构综合测评之后,河南科技大学全世界排名超前,成功跻身世界顶尖大学!洛阳牡丹甲天下中国旅游网洛阳牡丹甲不是

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

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

sadf

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

java解析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>

设计数据库:

如图:

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

代码功能实现设计:

框架:

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

说明: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 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文件:

#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

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 block
				e.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 {

	@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

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说明已经成功添加数据库。

数据库数据如图:

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

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

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


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 简单易学的机器学习算法——梯度提升决策树GBDT「建议收藏」

    简单易学的机器学习算法——梯度提升决策树GBDT「建议收藏」梯度提升决策树(GradientBoostingDecisionTree,GBDT)算法是近年来被提及比较多的一个算法,这主要得益于其算法的性能,以及该算法在各类数据挖掘以及机器学习比赛中的卓越表现,有很多人对GBDT算法进行了开源代码的开发,比较火的是陈天奇的XGBoost和微软的LightGBM。一、监督学习1、监督学习的主要任务监督学习是机器学习算法中重要的一种,对于监督学习,假设有mm…

    2022年10月12日
    1
  • fpga流水线设计思想_fpga视频容易入门

    fpga流水线设计思想_fpga视频容易入门流水线设计的思想来源是高流量,也就是说时间延迟固定的情况下尽可能的产生高的流量,使得整体的信号传输速率得到提升。这一概念我是最早在《高级FPGA设计——结构、实现和优化》(SteveKilts)一书中接触到的。作者在书中提到,高流量设计的抽象术语就是“流水线”。作者指出:流水线设计的优越性是新数据在前面的数据完成之前就可以进行处理。并给出一个例子,硬件实现计算一个数的三次方。这给出设计代码,用于下文分析比较。1.类似于软件的递归算法实现(非流水线结构)`timescale1ns/

    2022年8月14日
    1
  • ubuntu中文输入法_ubuntu如何设置中文输入法

    ubuntu中文输入法_ubuntu如何设置中文输入法在Ubtuntu12.10中自带了中文输入法,可通过Ctrl+Space进行输入法到切换,在英文系统中同样已经预装了ibus,只需要下载一下简体中文语言包即可。如何安装简体中文语言包?依次选择SytemSetting–>LanguageSupport–>Install/RemoveLanguages后,将出现如下图所示窗口:将右侧Installed栏的选择框勾…

    2022年9月26日
    0
  • CentOS镜像下载&安装配置&Linux常用命令[通俗易懂]

    CentOS镜像下载&安装配置&Linux常用命令[通俗易懂]目录1.linuxcentos7镜像下载2.创建虚拟机3.正式安装CentOS74.远程工具Xshell的使用5.更换国内源6.运行yum命令出现“Existinglock/var/run/yum.pid:anothercopyisrunningaspid…”解决方法​7.Linux常用命令1.linuxcentos7镜像下载下载地址:http://mirrors.aliyun.com/centos/7/isos/x8…

    2022年5月9日
    95
  • 竞争的关键驱动的异步通知

    竞争的关键驱动的异步通知

    2022年1月4日
    41
  • 黑客养成秘籍_名媛修炼手册

    黑客养成秘籍_名媛修炼手册第一节、黑客的种类和行为以我的理解,“黑客”大体上应该分为“正”、“邪”两类,正派黑客依靠自己掌握的知识帮助系统管理员找出系统中的漏洞并加以完善,而邪派黑客则是通过各种黑客技能对系统进行攻击、入侵或者做其他一些有害于网络的事情,因为邪派黑客所从事的事情违背了《黑客守则》,所以他们真正的名字叫“骇客”(Cracker)而非“黑客”(Hacker),也就是我们平时经常听说的“黑客”(Cacker

    2022年9月17日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号