您的位置:首页 > 数据库

自己编写的一个程序:读取XML格式的日志文件,并以一定的数据写入数据库中

2007-01-15 16:16 951 查看
【1】程序说明:下面对用到的一个java类进行一番说明。

NorthKing.java  这个是程序的入口类

XMLtoDB.java  这个是处理从XML写入数据库的类 

AnalysisXml.java  这个是分析XML文件的类

WorkLog.java  这个是XML日志文件的JavaBean类

DBConnection.java  这个是数据连接代码类

【2】详细程序说明:对每个类给出具体代码,共大家参考。

NorthKing.java

package src.net.nk.tc;

public class NorthKing {

 /**
  * @param args
  */
 public static void main(String[] args) {
  // TODO Auto-generated method stub
  
  XMLtoDB xmltodb = new XMLtoDB();
  
  xmltodb.doXMLtoDB_Worklog();
  
  xmltodb.doXMLtoDB_Ipaddress();
     }
 
}

XMLtoDB.java

package src.net.nk.tc;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.StringTokenizer;
import java.util.regex.*;

public class XMLtoDB {
 
   private DBConnection dbc;
   private AnalysisXml AX;
   private WorkLog wl;
   private Connection xmlcon;
   private Statement st;
  
   
  
  
 
 public XMLtoDB()
 {
  
  dbc = new DBConnection();
  dbc.getProperties();
  xmlcon = dbc.getConnection();
  AX = new AnalysisXml();
  AX.XmlData("/worklog.xml");
  wl = new WorkLog();
 }
 
 
 
 public void doXMLtoDB_Worklog()//写入数据到WORKLOG表中
 {

     try {
         
   st = xmlcon.createStatement();
      
   for(int i=0;i<AX.xmlVector.size();i++)
   {
    wl = (WorkLog)AX.xmlVector.get(i);
    
    xmlcon.setAutoCommit(false);
    
    
    
    st.executeUpdate("insert into WORKLOG values('"+wl.getCode()+"','"+wl.getName()+"','"+wl.getLog()+"')");
    
    xmlcon.commit();
    
   /* String temp = wl.getCode()+" | "+wl.getName()+" | "+wl.getLog();
    System.out.println(temp);*/
   }
   
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   try {
    xmlcon.rollback();
    if(st!=null)
     st.close();
   } catch (SQLException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
   }
   e.printStackTrace();
  }
     
  
 }
 
 public void doXMLtoDB_Ipaddress()//写入数据到IPADDRESS表中
 {
  
 try {
     
  st = xmlcon.createStatement();
   
  for(int i=0;i<AX.xmlVector.size();i++)
  {
   wl = (WorkLog)AX.xmlVector.get(i);
   
   String[] ipstring = findAllIP(wl.getLog()).split(" ");
   
   //StringTokenizer stn = new StringTokenizer(findAllIP(wl.getLog())," ");
      
   xmlcon.setAutoCommit(false);
   
   for(int j=0;j<ipstring.length;j++)
   {
    st.executeUpdate("insert into IPADDRESS values('"+wl.getCode()+"','"+ipstring[j]+"')");
   }
   
   
   /*while(stn.hasMoreTokens())
   {
    System.out.println(stn.nextToken());
    st.executeUpdate("insert into IPADDRESS values('"+wl.getCode()+"','"+stn.nextToken()+"')");
   }*/
   
   xmlcon.commit();
   
  
  }
  
  
 } catch (Exception e) {
  
  try {
   xmlcon.rollback();
   if(st!=null)
    st.close();
   
  } catch (SQLException e1) {
   
   e1.printStackTrace();
  }
  e.printStackTrace();
 }
  
  
 }
 
 public String findAllIP(String src) {//对一行读取所有ip,并存在返回的String中,以空格分隔
  String ippattern = "[//d]{0,3}//.[//d]{0,3}//.[//d]{0,3}//.[//d]{0,3}";
  String timepattern = "[//d]{4}//.[//d]{2}//.[//d]{2}//.[//d]{2}//.[//d]{2}";
  String temp = "";

  StringBuffer sb = new StringBuffer();
  sb.append(src);

  Matcher timematcher = Pattern.compile(timepattern).matcher(src);
  while (timematcher.find()) {
   temp = timematcher.group(0);
   int j = sb.indexOf(temp);

   if (j >= 0) {
    for (int x = 0; x < 16; x++) {
     sb.deleteCharAt(j);
    }
   }
  }

  src = sb.toString();
  Matcher ipmather = Pattern.compile(ippattern).matcher(src);
  StringBuffer result = new StringBuffer();

  while (ipmather.find()) {
   result.append(ipmather.group(0) + " ");
  }

  // System.out.println(result);

  return result.toString();
 }
 

 }

AnalysisXml.java

package src.net.nk.tc;

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.output.*;
import org.jdom.input.*;

public class AnalysisXml {
 
 
 public Vector xmlVector = null;

 
 
 public List XmlData(String path)
 {
  xmlVector = new Vector();
  
  InputStream fi = null;
  try{
   
  fi = getClass().getResourceAsStream(path);
  
  xmlVector = new Vector();
  SAXBuilder sb = new SAXBuilder();
  Document doc = sb.build(fi);
  
  Element root = doc.getRootElement(); //得到根元素
  List logs = root.getChildren(); //得到根元素所有子元素的集合
  Element log =null;
  WorkLog xml =null;
  for(int index=0;index<logs.size();index++)
  {
   xml = new WorkLog();
   log = (Element)logs.get(index);
   
   xml.setCode(log.getAttributeValue("code"));
   xml.setName(log.getAttributeValue("name"));
   xml.setLog(log.getValue());
   
   xmlVector.add(xml);
  }
  }
  catch(Exception x)
  {
   System.out.println(x.toString());
  }
  finally{
   try{
   fi.close();
   }
   catch(Exception e){
   e.printStackTrace();
   }
   }
   return xmlVector;

   
 }
 

}

WorkLog.java

package src.net.nk.tc;

public class WorkLog {
 
 private String code;
 private String name;
 private String log;
 
 public String  getCode()
 {
  return this.code;
 }
 
 public String  getName()
 {
  return this.name;
 }
 
 public String  getLog()
 {
  return this.log;
 }
 
 public void setCode(String pra)
 {
  this.code = pra;
 }
 
 public void setName(String pra)
 {
  this.name = pra;
 }
 
 public void setLog(String pra)
 {
  this.log = pra;
 }
 
 

}

DBConnection.java

package src.net.nk.tc;
bb5d

import java.sql.*;
import java.util.*;
import java.io.*;

public class DBConnection {
 
 private Properties ps;
 
 private String Driver=null;
 private String Url=null;
 private String Username=null;
 private String Password=null;
 
 private Connection con=null;
 
 
 public void getProperties()
 {
   ps = new Properties();
   InputStream  is = getClass().getResourceAsStream("/dbconnect.properties");
   try{
    ps.load(is);
   
   }
   catch(Exception e)
   {
    System.out.println(e.toString());
   }
  
   Driver = ps.getProperty("DBDriver");
   Url = ps.getProperty("DBUrl");
   Username = ps.getProperty("DBUserName");
   Password = ps.getProperty("DBUserPwd");
  
  
 }
 
 public Connection getConnection()
 {
  try {
   Class.forName(this.Driver);
   con = DriverManager.getConnection(this.Url,this.Username,this.Password);
   
   return con;
   
  } catch (Exception e) {
   // TODO Auto-generated catch block
   
   e.printStackTrace();
   return con;
  }
  
 }
 

}

【3】相关的(配置)文件

dbconnect.properties  数据库连接配置文件

worklog.xml   日志文件

详细如下所示:

【dbconnec.properties】

 # MySql #
#DBDriver=com.mysql.jdbc.Driver
#DBUrl=jdbc:mysql://192.168.0.66/TEST
#DBUserName=root
#DBUserPwd=password

#com.borland.datastore.jdbc.DataStoreDriver#
#DBDriver=com.borland.datastore.jdbc.DataStoreDriver
#DBUrl=jdbc:borland:dslocal:northking.jds
#DBUserName=northking
#DBUserPwd=northking

# Oracle #
#DBDriver=oracle.jdbc.driver.OracleDriver
#DBUrl=jdbc:oracle:thin:@192.168.0.66:1521:TEST
#DBUserName=sys
#DBUserPwd=password
#

# SQL¡¡Server #
#DBDriver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#DBUrl=jdbc:microsoft:sqlserver://192.168.0.66:1433;databaseName=TEST
#DBUserName=sa
#DBUserPwd=password
#

# Sybase #
#DBDriver=com.sybase.jdbc2.jdbc.SybDriver
#DBUrl=jdbc:sybase:Tds:192.168.0.66:2638?ServiceName=TEST
#DBUserName=sa
#DBUserPwd=password
#

# DB2 #
#DBDriver=com.ibm.db2.jdbc.net.DB2Driver
#DBUrl=jdbc:db2://192.168.0.66:6789/TEST
#DBUserName=db2inst1
#DBUserPwd=password
#

# Informix #
#DBDriver=com.informix.jdbc.IfxDriver
#DBUrl=jdbc:informix-sqli://123.45.67.89:1533/myDB:INFORMIXSERVER=myserver
#DBUserName=db2inst1
#DBUserPwd=password
#

# Access #
DBDriver=sun.jdbc.odbc.JdbcOdbcDriver
DBUrl=jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=C://data.mdb
DBUserName=admin
DBUserPwd=password
#

----------------------------------------

【worklog.xml】

<?xml version="1.0" encoding="UTF-8"?>
<work_logs>
 <log code="100000101" name="张网">1900.01.01.01.01在148.74.77.198.关闭web应用4.194.208.181.修复数据库12.106.220.202.备份数据库95.245.222.14.调试日志242.93.134.196.修改log14.151.120.76.修改界面</log>
 <log code="100000102" name="刘络">1900.01.02.01.01在67.71.212.210.备份数据库150.251.232.58.调试日志</log>
 <log code="100000103" name="陈庭管">1900.01.03.01.01在62.136.27.255.修改界面172.4.147.26.分配任务26.204.73.12.强行结束本程序75.97.77.242.OCR识别启动250.102.71.41.打开第一批量42.165.105.105.打开扫描程序182.83.161.53.扫描会计档案47.149.21.117.质量检查231.67.200.97.打开计算机</log>
 <log code="100000104" name="杨理">1900.01.04.01.01在161.160.109.25.没有任何动作143.177.233.213.拷贝资料6.139.234.110.设置管理员权限173.128.131.118.启动游戏90.103.69.14.编写文档62.250.16.100.开发程序93.125.40.121.关闭服务66.160.138.40.关闭计算机239.167.129.100.关闭web应用27.200.117.192.修复数据库152.212.5.54.备份数据库19.27.85.33.调试日志0.137.168.139.修改log211.21.49.173.修改界面116.91.38.180.分配任务237.135.23.193.强行结束本程序102.118.126.53.OCR识别启动84.24.150.43.打开第一批量237.25.113.70.打开扫描程序222.191.70.172.扫描会计档案65.23.8.82.质量检查</log>
 <log code="100000105" name="赵外">1900.01.05.01.01在60.123.65.87.没有任何动作11.123.53.220.拷贝资料150.193.237.84.设置管理员权限138.21.162.105.启动游戏245.29.235.158.编写文档89.38.122.56.开发程序253.33.7.88.关闭服务140.235.137.104.关闭计算机216.211.171.184.关闭web应用254.87.126.105.修复数据库177.46.108.139.备份数据库208.138.109.130.调试日志58.158.125.174.修改log226.94.77.75.修改界面38.135.57.149.分配任务93.223.122.49.强行结束本程序</log>
 <log code="100000106" name="黄其包">1900.01.06.01.01在157.199.41.206.修改log52.244.17.16.修改界面202.97.118.30.分配任务</log>
 <log code="100000107" name="周性">1900.01.07.01.01在12.182.136.143.启动服务55.119.190.192.启动工作流</log>
 <log code="100000108" name="吴质">1900.01.08.01.01在190.23.162.182.启动游戏4.110.103.70.编写文档251.205.178.106.开发程序187.71.91.111.关闭服务241.31.165.89.关闭计算机27.47.20.110.关闭web应用245.138.126.248.修复数据库56.97.101.72.备份数据库128.35.132.246.调试日志142.232.168.112.修改log177.16.193.179.修改界面127.40.57.83.分配任务200.13.132.193.强行结束本程序204.83.248.205.OCR识别启动172.231.223.106.打开第一批量31.243.203.178.打开扫描程序102.4.43.42.扫描会计档案</log>
</work_logs>

 

PS:程序的结构 大家自己可以分析 我就不分析了 请朋友们一起分享

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐