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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++中的仿函数使用

    C++中的仿函数使用

    2021年11月20日
    58
  • stc15w4k32s4最小系统原理图_单片机最小系统原理图,求详细讲解

    stc15w4k32s4最小系统原理图_单片机最小系统原理图,求详细讲解展开全部我是一名单片机工程师,下面51单片机最小系统的讲解,你参考一下51单片机共有40只引脚.下面这个就是636f70793231313335323631343130323136353331333365653861最小系统原理图,就是靠这四个部分,这个单片机就可以运行起来了.我们来一,一讲解一下:1第一部分:电源组(标记为1的部分)40脚接电源5V(右上角),20脚接电源负极(左下角),在单片…

    2022年8月30日
    5
  • 太厉害了,终于有人能把TCP/IP 协议讲的明明白白了「建议收藏」

    一图看完本文一、计算机网络体系结构分层计算机网络体系结构分层计算机网络体系结构分层不难看出,TCP/IP与OSI在分层模块上稍有区别。OSI参考模型注重“通信协议必要的功能是什么”,而TCP/IP则更强调“在计算机上实现协议应该开发哪种程序”。二、TCP/IP基础1.TCP/IP的具体含义从字面意义上讲,有人可能会认为…

    2022年4月12日
    44
  • 密宗经典是佛说的吗_华为微信语音加密怎么试听

    密宗经典是佛说的吗_华为微信语音加密怎么试听什么?佛经都能用来加密了?自上次的社会主义核心价值观加密之后,我已经见怪不怪了。题目:夜哆悉諳多苦奢陀奢諦冥神哆盧穆皤三侄三即諸諳即冥迦冥隸數顛耶迦奢若吉怯陀諳怖奢智侄諸若奢數菩奢集遠俱老竟寫明奢若梵等盧皤豆蒙密離怯婆皤礙他哆提哆多缽以南哆心曰姪罰蒙呐神。舍切真怯勝呐得俱沙罰娑是怯遠得呐數罰輸哆遠薩得槃漫夢盧皤亦醯呐娑皤瑟輸諳尼摩罰薩冥大倒參夢侄阿心罰等奢大度地冥殿皤沙蘇輸奢恐豆侄得罰提哆伽諳沙楞缽三死怯摩大蘇者數一遮解析:这题是攻防世界中的一道题目,这一段文字是佛经,按..

    2025年8月14日
    4
  • Jmeter性能测试(一)性能测试关键指标解析

    Jmeter性能测试(一)性能测试关键指标解析一、性能测试关键指标解析1、响应时间多–并发量快–延时、响应时间好–稳定性(长时间运行)省–资源利用率响应时间:对请求作出响应所需要的的时间,是用户感知软件性能的主要指标。响应时间包括:1.用户客户端呈现时间2.请求/响应数据网络传输时间3.应用服务器处理时间4.数据库系统处理时间响应时间多少合理?对于一个Web系统,普遍接受的响应时间标准为2/5/8秒(2秒–非常好;5秒–可接受;8秒是上限)2、并发用户数用户…

    2022年6月17日
    132
  • ma3d舞台建模教程_3d渲染需要什么配置

    ma3d舞台建模教程_3d渲染需要什么配置2019.8.9更新:Smart3D现在对所有的.s3c文件都进行了加密,已经不能直接设置txt文件,但是依旧可以使用CC_S3CComposer.exe进行编辑创建。但是官网下载的.s3c文件还进一步有设置,不能进行编辑更改,因此请下载我提供的.s3c文件进行操作。以下步骤根据最新.s3c格式进行编写。一、须知:S3C是Smart3D内部格式,实质上是一个分块模型的索引,可以…

    2022年10月7日
    2

发表回复

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

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