Dom查看数据库mysql_用DOM方法解析xml文件并存入Mysql数据库【java】

对于一个数据量大、复杂的xml文件,要进行解析并且存入数据库。首先要对xml文件的dom结构有所了解,并进行分析,然后获取自己想要的数据,之后进行数据的存储。

接下来说明一下具体的步骤和方法。

一、解析xml文件

我的xml文件(这里只是列出了一部分)如下:

22097

Ajay Gupta

Ajay

Gupta

Explanation-based Failure Recovery

1987

Ajay Gupta

AAAI

13048

0

null

Time Representation in Prolog Circuit Modelling

1991

Yossi Lichtenstein,Bob Welham,Ajay Gupta

ALPUK

39153

0

null

 
 

我想要的数据是publication中的id和authors,并且将id和authors都存为String格式,我的解析代码如下:

我创建了一个publication类,方便将数据存储:

Publication类:

public class Publication {

private String id;

private String authors;

public String getAuthors() {

return authors;

}

public void setAuthors(String authors) {

this.authors = authors;

}

public String getId() {

return id;

}

public void setId(String string) {

this.id = string;

}

@Override

public String toString(){

return this.id+":"+this.authors;

}

}

解析代码:

private static ArrayList getParserAuthor() {

ArrayList list= new ArrayList();

//获取DOM解析器

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder;

try {

builder = factory.newDocumentBuilder();

Document doc;

doc = builder.parse(new File("Ajay Gupta.xml"));

//得到一个element根元素,获得根节点

Element root = doc.getDocumentElement();

System.out.println("根元素:"+root.getNodeName());

//子节点

NodeList personNodes = root.getElementsByTagName("publication");

for(int i = 0; i

Element personElement = (Element) personNodes.item(i);

Publication publication = new Publication();

NodeList childNodes = personElement.getChildNodes();

//System.out.println("*****"+childNodes.getLength());

for (int j = 0; j < childNodes.getLength(); j++) {

if(childNodes.item(j).getNodeType()==Node.ELEMENT_NODE){

if("authors".equals(childNodes.item(j).getNodeName())){

publication.setAuthors(childNodes.item(j).getFirstChild().getNodeValue());

}else if("id".equals(childNodes.item(j).getNodeName())){

publication.setId(childNodes.item(j).getFirstChild().getNodeValue());

}

}

}

list.add(publication);

}

for(Publication publication2 : list){ //为了查看数据是否正确,进行打印结果

System.out.println(publication2.toString());

}

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

} catch (ParserConfigurationException e) {

e.printStackTrace();

}

return list;

}

二、存入数据库

1)我创建的数据库表结构为:

Publication表:

0818b9ca8b590ca3270a3433284dd417.png

设置id的目的是让数据能够自增,记得要设置为主键并且是不为空。如果没有客户端可以创建数据库和表,可以直接在命令行里写也是很简单的。

2)插入数据库。

在进行数据库操作时,需要导入连接数据库的驱动,并测试是否连接成功。

static String sqlStr = "jdbc:mysql://localhost:3306/Publications";

static String rootName = "root";//数据库名

static String rootPwd = "root";//数据库密码

public static void writeToMysql(Publication publication) {

System.out.println(publication);

//1.加载driver驱动

try {

// 加载MySql的驱动类

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

System.out.println("找不到驱动程序类 ,加载驱动失败!");

e.printStackTrace();

}

//2.建立连接

Statement st = null;

//调用DriverManager对象的getConnection()方法,获得一个Connection对象

Connection con =null;

try {

//建立数据库连接

con = DriverManager.getConnection(sqlStr, rootName,rootPwd);

//INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

String paperId= publication.getId();

String authors = publication.getAuthors();

//插入语句格式

String sql = "insert into publication1(paperId,Authors) values(\""+paperId+"\",\""+authors+"\")";

System.out.println(sql);

st = con.createStatement(); //创建一个Statement对象

st.executeUpdate(sql);//提交数据更新

} catch (SQLException e) {

e.printStackTrace();

}finally{

try {

st.close();

con.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

3)测试代码,编码main函数进行调用。

public static void main(String[] args) {

ArrayList list= new ArrayList();

list = getParserAuthor();

for(int i=0;i

{

if (list.get(i)!=null)

writeToMysql(list.get(i));

}

}

到这里所有的步骤就结束了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值