用DOM API解析xml文档

现有Student.XML文件

< Student >

< StuNo >HB2080001 StuNo >

< StuName >小明 StuName >

< Sex > Sex >

< Brithday >1987-01-01 Brithday >

< Telphone >13800000000 Telphone >

< Address >北京 Address >

< Remark >This is Remark Remark >

Student >

要求:

读取文件数据,将数据插入到表中,如果文件解析出错就显示错误页面.

有学生信息表(Student)

字段名

类型

StuId(主键)

Number

StuNo

Varchar2(8)

StuName

Varchar2(16)

Sex

Number (1)

Brithday

Date

Address

Varchar2 (64)

Telphone

Varchar2 (16)

Remark

Varchar2 (128)


package com.hb2080.service;

import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.apache.crimson.tree.XmlDocument;
import dao.DBTool;
import po.Student;

public class XMLTest {

 public Student readXMLFile(String inFile) throws Exception {
  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
  DocumentBuilder db = null;
  try {
   db = dbf.newDocumentBuilder();
  } catch (ParserConfigurationException pce) {
   pce.printStackTrace();
  }
  Document doc = null;
  doc = db.parse(inFile);
  Element root = doc.getDocumentElement(); // 先取跟元素Student

  Student student = new Student();
  Random random = new Random();
  student.setStuId(new Long(random.nextLong()));

  NodeList stuNo = root.getElementsByTagName("StuNo");
  student.setStuNo(stuNo.item(0).getFirstChild().getNodeValue());

  NodeList stuName = root.getElementsByTagName("StuName");
  student.setStuName((stuName.item(0).getFirstChild().getNodeValue()));

  NodeList sexs = root.getElementsByTagName("Sex");
  String sexTemp = sexs.item(0).getFirstChild().getNodeValue();
  int sex = 0;
  if (sexTemp.equals("男")) {
   sex = 1;
  }
  student.setSex(new Long(sex));

  NodeList brithday = root.getElementsByTagName("Birthday");
  student.setBirthday((brithday.item(0).getFirstChild().getNodeValue()));

  NodeList telephone = root.getElementsByTagName("Telephone");
  student
    .setTelephone((telephone.item(0).getFirstChild().getNodeValue()));

  NodeList address = root.getElementsByTagName("Address");
  student.setAddress((address.item(0).getFirstChild().getNodeValue()));

  NodeList remark = root.getElementsByTagName("Remark");
  student.setRemark((remark.item(0).getFirstChild().getNodeValue()));

  return student;
 }

 public boolean writeIntoDB(Student student) {
  try{
  DBTool dbTool = new DBTool();
  dbTool.add(student);
  }catch(Exception e){
   e.printStackTrace();
   return false;
  }
  return true;
 }
}
package dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

import po.Student;

public class DBTool {
 private Connection conn;
 public void initConnection(){
  String url = "jdbc:oracle:thin:@localhost:1521:orcl";
  String user = "hch";
  String password = "huchunhua";
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn = DriverManager.getConnection(url, user, password);   
  } catch (Exception e) {
   e.printStackTrace();
  }  
 }
 
 public void closeConnection(){
  try {
   if(conn!=null)   
    conn.close();
  }catch (SQLException e) {
    e.printStackTrace();
   }
 }
 
 public void add(Student stu){ 
  String sql = " insert into student(stuid,stuno,stuname,sex,birthday,address,telephone,remark) values((select max(stuid) from student)+1," +
    "(select max(stuno) from student)+1,'"+stu.getStuName()+"',"+stu.getSex()+",to_date('"+stu.getBirthday()+"','yyyy-MM-dd'),'"+stu.getAddress()+"','"+stu.getTelephone()
    +"','"+stu.getRemark()+"')";
  
  try {
   this.initConnection();
   Statement st = conn.createStatement();
   st.executeUpdate(sql);   
  } catch (Exception e) {
   e.printStackTrace();
  }finally{
   this.closeConnection();
  }
 }
}


package servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import po.Student;

import com.hb2080.service.XMLTest;

public class Parse extends HttpServlet {


 public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  this.doPost(request, response);
 }

 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  XMLTest xmlTest = new XMLTest();
  Student student = new Student();
  try {
   student = xmlTest.readXMLFile("C:/tomcat5.0.28/webapps/test6/Student.xml");
  } catch (Exception e) {
   e.printStackTrace();
  }
  boolean bool = xmlTest.writeIntoDB(student); 
  String message ="";
  ServletContext application = this.getServletContext();
  RequestDispatcher rd = null;
  if(bool==true){
   message ="解析成功!";
   request.setAttribute("message",message);  
   rd = application.getRequestDispatcher("/parse.jsp");   
  }
  else{
   message ="解析失败!";
   rd = application.getRequestDispatcher("/error.jsp");
  }
  rd.forward(request,response); 
 }
}

package po;

import java.util.Date;

public class Student {
 private Long stuId;
 private String stuNo;
 private String stuName;
 private Long sex;
 private String birthday;
 private String address;
 private String telephone;
 private String remark;
 public String getAddress() {
  return address;
 }
 public void setAddress(String address) {
  this.address = address;
 }
 public String getBirthday() {
  return birthday;
 }
 public void setBirthday(String birthday) {
  this.birthday = birthday;
 }
 public String getRemark() {
  return remark;
 }
 public void setRemark(String remark) {
  this.remark = remark;
 }
 public Long getSex() {
  return sex;
 }
 public void setSex(Long sex) {
  this.sex = sex;
 }
 public Long getStuId() {
  return stuId;
 }
 public void setStuId(Long stuId) {
  this.stuId = stuId;
 }
 public String getStuName() {
  return stuName;
 }
 public void setStuName(String stuName) {
  this.stuName = stuName;
 }
 public String getStuNo() {
  return stuNo;
 }
 public void setStuNo(String stuNo) {
  this.stuNo = stuNo;
 }
 public String getTelephone() {
  return telephone;
 }
 public void setTelephone(String telephone) {
  this.telephone = telephone;
 }
 
}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9474419/viewspace-469882/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9474419/viewspace-469882/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值