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文档并保存到数据库


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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 从零开始学android<Notification通知.四十四.>

    从零开始学android<Notification通知.四十四.>在android中有时会在主界面上收到某些应用的推送,有的可以包含图片,声音或者震动效果,当点击这些提示时,有时还可以进入到发送提示的的应用。这些提示的推送就是通知,当然通知早根本上也是你一种服务。首先想要使用通知就必须使用到Notification.Builder和NotificationManager这两个类使用Notification.Builder来取

  • 【罗盘时钟(星空版)—使用html,js,css编写。(附全部源代码+效果)】[通俗易懂]

    【罗盘时钟(星空版)—使用html,js,css编写。(附全部源代码+效果)】[通俗易懂]效果换个背景:源代码index.html<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><title>CSDN—追梦者</title><linkrel=”stylesheet”href=”css/clock.css”></head><body><ulclass=”clock”id=”

  • 解决java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availa[通俗易懂]

    解决java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have availa[通俗易懂]解决java.lang.RuntimeException:com.netflix.client.ClientException:Loadbalancerdoesnothaveavailableserverforclient:xxx-xxx-xxx小弟第一次发博客,不喜勿喷,工作经验(1个月)各位大佬你们,最近在接触微服务项目,在运行的过程中遇到许多问题,第一次写博客,就发…

  • Render、RenderChildren和RenderControl

    Render、RenderChildren和RenderControl(1)protectedvirtualvoidRender(HtmlTextWriterwriter);  该方法用于将服务器控件内容发送到提供的HtmlTextWriter对象,此对象编写将在客户端呈现的内容。在开发服务器控件时,可以重写此方法以呈现服务器控件。  (2)protectedvirtualvoidRenderChildren(HtmlTextW…

  • cnpm安装步骤[通俗易懂]

    cnpm安装步骤[通俗易懂]安装nodeJS官网下载:https://nodejs.org/zh-cn/download/releases/选版本点击下载然后下载后缀名为msi,因为安装简单二、创建文件夹安装完成后我们打开它的目录创建两个文件夹(后面配置环境变量需要)node_cachenode_global三、配置npm的全局模块的存放路径、cache的路径win+r输入cmd打开命令提示符窗口,输入:npmconfigsetprefix”选择刚刚创建node_global文件路径”np

    2022年10月16日
  • python——正则表达式(re模块)详解

    python——正则表达式(re模块)详解在Python中需要通过正则表达式对字符串进⾏匹配的时候,可以使⽤⼀个python自带的模块,名字为re。正则表达式的大致匹配过程是:1.依次拿出表达式和文本中的字符比较,2.如果每一个字符都能匹配,则匹配成功;一旦有匹配不成功的字符则匹配失败。3.如果表达式中有量词或边界,这个过程会稍微有一些不同。r:在带有’r’前缀的字符串字面值中,反斜杠不必做任何特殊处理。因此r”\n”表示包含’\’和’n’两个字符的字符串,而”\n”则表示只包含一个换行符的字符串。re模块的

发表回复

您的电子邮箱地址不会被公开。

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