⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 appendlogxml.java

📁 一套完整的档案管理系统
💻 JAVA
字号:
//package com.stsc.archive.xml;
package com.stsc.archive.backup;

/*
  添加日志信息到xml文件
*/

import java.io.*; //Java基础包,包含各种IO操作
import java.util.*; //Java基础包,包含各种标准数据结构操作
import javax.xml.parsers.*; //XML解析器接口
import org.w3c.dom.*; //XML的DOM实现
import org.apache.crimson.tree.XmlDocument;//写XML文件要用到
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.*;

import com.stsc.archive.backup.CopyFile;


public class AppendLogXml
{
	private static final String ROOT = "日志信息";		//根目录
	private static final String ONELOG = "记录";		//一条记录
	private static final String RUNNER = "操作者";		//一条记录
	private static final String ACTION = "操作";		//一条记录
	private static final String CONTENT = "操作内容";	//一条记录
	private static final String ACTIONDATE = "操作日期";	//一条记录
	private static final String ACTIONTIME = "操作时间";	//一条记录
	
	public AppendLogXml()
	{
	}
	
	public AppendLogXml(String filename, LogBeanVector logvector)
	{
		append(filename, logvector);
	}
	
	public AppendLogXml(String filename, LogBean logbean)
	{
		append(filename, logbean);
	}
	
	public boolean append(String filename, LogBeanVector logvector)
	{
		if( (filename == null) || (logvector == null) )
		{
			return false;
		}
		
		if(CopyFile.createDir(filename) == false)	//建立目录;
		{
			System.out.println("创建目录失败!");
			return false;
		}

		//-------------------------------------------------------
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	    DocumentBuilder db = null;
	    try 
	    {
	        db = dbf.newDocumentBuilder();
	    } catch (ParserConfigurationException pce) 
	    {
	        System.out.println(pce); //出异常时输出异常信息,然后退出,下同
	        return false;
	    } 
	    
	    //先获得原有文件信息
	    Document doc = null;
	    try
	    {
	        doc = db.parse(filename);
	    }catch(Exception e)
	    {
	    	System.out.println("doc 异常:可能不存在该日志文件,现在新建一个日志文件");
	    	doc = db.newDocument();	//如果没有该文件,则创建一个
	    	Element rootfirst = doc.createElement(ROOT);
	    	doc.appendChild(rootfirst); 
	    //	return false;
	    }
	    Element root = doc.getDocumentElement();

		//添加日志信息-------------
		for(int i=0; i<logvector.getLength(); i++)
		{
			Element student = doc.createElement(ONELOG);
		   student.setAttribute(RUNNER, logvector.get(i).getUsername());
		   root.appendChild(student);
		   
		   Element name = doc.createElement(ACTION);
		   student.appendChild(name);
		   Text tName = doc.createTextNode(logvector.get(i).getAction());
		   name.appendChild(tName);
		   
		   name = doc.createElement(CONTENT);
		   student.appendChild(name);
		   tName = doc.createTextNode(logvector.get(i).getContent());
		   name.appendChild(tName);
		   
		   name = doc.createElement(ACTIONDATE);
		   student.appendChild(name);
		   tName = doc.createTextNode(logvector.get(i).getDate());
		   name.appendChild(tName);
		   
		   name = doc.createElement(ACTIONTIME);
		   student.appendChild(name);
		   tName = doc.createTextNode(logvector.get(i).getTime());
		   name.appendChild(tName);
		}
	   //=============================

	   DOMSource doms = new DOMSource (doc);	
		
		File f = new File (filename);
		StreamResult sr = new StreamResult (f);
		// Output.
		try 
		{	
			TransformerFactory tf=TransformerFactory.newInstance();	
			// Get a TransformerFactory.
			Transformer t=tf.newTransformer ();	
			// Make a new Transformer from it	
			Properties properties = t.getOutputProperties();   
			properties.setProperty(OutputKeys.ENCODING,"GB2312"); 
			properties.setProperty(OutputKeys.METHOD,"xml");
			properties.setProperty(OutputKeys.VERSION,"1.0");
			properties.setProperty(OutputKeys.INDENT,"yes");
			t.setOutputProperties(properties);   
			// now proceed with the transformation   
			t.transform(doms,sr);	
			// Use the DOMSource as input. StreamResult as output path.		
		}
		catch (TransformerConfigurationException tce)
		{			
			System.out.println("Transformer Configuration Exception\n-----");
			tce.printStackTrace();	
			return false;
		}
		catch (TransformerException te) 
		{			
			System.out.println ("Transformer Exception\n---------");			
			te.printStackTrace ();	
			return false;
		}	

		return true;
		//=======================================================
	}
	
	public boolean append(String filename, LogBean logbean)
	{
		System.out.println(filename);
		if( (filename == null) || (logbean == null) )
		{
			return false;
		}
		
		if(CopyFile.createDir(filename) == false)	//建立目录;
		{
			return false;
		}

		//-------------------------------------------------------
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	    DocumentBuilder db = null;
	    try 
	    {
	        db = dbf.newDocumentBuilder();
	    } catch (ParserConfigurationException pce) 
	    {
	        System.out.println(pce); //出异常时输出异常信息,然后退出,下同
	        return false;
	    } 
	    
	    //先获得原有文件信息
	    Document doc = null;
	    try
	    {
	        doc = db.parse(filename);
	    }catch(Exception e)
	    {
	    	System.out.println("doc 异常:可能不存在该日志文件,现在新建一个日志文件");
	    	doc = db.newDocument();	//如果没有该文件,则创建一个
	    	Element rootfirst = doc.createElement(ROOT);
	    	doc.appendChild(rootfirst); 
	    //	return false;
	    }

		//添加一条日志信息-------------
		Element student = doc.createElement(ONELOG);
		Element root = doc.getDocumentElement();
	   student.setAttribute(RUNNER, logbean.getUsername());
	   root.appendChild(student);
	   
	   Element name = doc.createElement(ACTION);
	   student.appendChild(name);
	   Text tName = doc.createTextNode(logbean.getAction());
	   name.appendChild(tName);
	   
	   name = doc.createElement(CONTENT);
	   student.appendChild(name);
	   tName = doc.createTextNode(logbean.getContent());
	   name.appendChild(tName);
	   
	   name = doc.createElement(ACTIONDATE);
	   student.appendChild(name);
	   tName = doc.createTextNode(logbean.getDate());
	   name.appendChild(tName);
	   
	   name = doc.createElement(ACTIONTIME);
	   student.appendChild(name);
	   tName = doc.createTextNode(logbean.getTime());
	   name.appendChild(tName);
	   //=============================

	   DOMSource doms = new DOMSource (doc);	
		
		File f = new File (filename);
		StreamResult sr = new StreamResult (f);
		// Output.
		try 
		{	
			TransformerFactory tf=TransformerFactory.newInstance();	
			// Get a TransformerFactory.
			Transformer t=tf.newTransformer ();	
			// Make a new Transformer from it	
			Properties properties = t.getOutputProperties();   
			properties.setProperty(OutputKeys.ENCODING,"GB2312"); 
			properties.setProperty(OutputKeys.METHOD,"xml");
			properties.setProperty(OutputKeys.VERSION,"1.0");
			properties.setProperty(OutputKeys.INDENT,"yes");
			t.setOutputProperties(properties);   
			// now proceed with the transformation   
			t.transform(doms,sr);	
			// Use the DOMSource as input. StreamResult as output path.		
		}
		catch (TransformerConfigurationException tce)
		{			
			System.out.println("Transformer Configuration Exception\n-----");
			tce.printStackTrace();	
			return false;
		}
		catch (TransformerException te) 
		{			
			System.out.println ("Transformer Exception\n---------");			
			te.printStackTrace ();	
			return false;
		}	

		return true;
		//=======================================================


/*		try
		{
			LogBeanVector myvector = readXMLFile(filename);
			if(myvector == null)
			{
				myvector = new LogBeanVector();
			}
			myvector.add(logbean);
			
			writeXMLFile(filename, myvector);
			
			return true;
		}catch(Exception e)
		{
			return false;
		}*/
	}
	
	public boolean writeXMLFile(String outFile, LogBeanVector myvector) throws Exception 
	{
		if( (outFile == null) || (myvector == null) )
			return false;
			
		if(CopyFile.createDir(outFile) == false)	//建立目录;
		{
			return false;
		}
		
	    //为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
	    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	    DocumentBuilder db = null;
	    try 
	    {
	        db = dbf.newDocumentBuilder();
	    } 
	    catch (ParserConfigurationException pce) 
	    {
	        System.out.println(pce);
	        return false;
	    } 
	    Document doc = null;
	    doc = db.newDocument();

		//--------特殊处理----------------------------------------
	    //下面是建立XML文档内容的过程,先建立根元素
	    Element root = doc.createElement(ROOT);
	    //根元素添加上文档
	    doc.appendChild(root); 
	    System.out.println("writexmlfile begin before for");
	    for (int i = 0; i < myvector.getLength(); i++) 
	    {
	       Element student = doc.createElement(ONELOG);
	       student.setAttribute(RUNNER, myvector.get(i).getUsername());
	       root.appendChild(student);
	       
	       Element name = doc.createElement(ACTION);
	       student.appendChild(name);
	       Text tName = doc.createTextNode(myvector.get(i).getAction());
	       name.appendChild(tName);
	       
	       name = doc.createElement(CONTENT);
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getContent());
	       name.appendChild(tName);
	       
	       name = doc.createElement(ACTIONDATE);
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getDate());
	       name.appendChild(tName);
	       
	       name = doc.createElement(ACTIONTIME);
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getTime());
	       name.appendChild(tName);
	   }
	   //=============================================================

	   DOMSource doms = new DOMSource (doc);	
		
		File f = new File (outFile);
		StreamResult sr = new StreamResult (f);
		// Output.
		try 
		{	
			TransformerFactory tf=TransformerFactory.newInstance();	
			// Get a TransformerFactory.
			Transformer t=tf.newTransformer ();	
			// Make a new Transformer from it	
			Properties properties = t.getOutputProperties();   
			properties.setProperty(OutputKeys.ENCODING,"GB2312"); 
			properties.setProperty(OutputKeys.METHOD,"xml");
			properties.setProperty(OutputKeys.VERSION,"1.0");
			properties.setProperty(OutputKeys.INDENT,"yes");
			t.setOutputProperties(properties);   
			// now proceed with the transformation   
			t.transform(doms,sr);	
			// Use the DOMSource as input. StreamResult as output path.		
		}
		catch (TransformerConfigurationException tce)
		{			
			System.out.println("Transformer Configuration Exception\n-----");
			tce.printStackTrace();	
			return false;
		}
		catch (TransformerException te) 
		{			
			System.out.println ("Transformer Exception\n---------");			
			te.printStackTrace ();	
			return false;
		}	

		return true;
	}
	
	public LogBeanVector readXMLFile(String inFile) throws Exception 
	{
		if(inFile == null)
			return null;
		
		System.out.println("readxmlfile begin========");
	   	//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
	    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
	    DocumentBuilder db = null;
	    try 
	    {
	        db = dbf.newDocumentBuilder();
	    } catch (ParserConfigurationException pce) 
	    {
	        System.out.println(pce); //出异常时输出异常信息,然后退出,下同
	        return null;
	    } 
	    Document doc = null;
	    try 
	    {
	        doc = db.parse(inFile);
	    } catch (DOMException dom) 
	    {
	        System.out.println(dom.getMessage());
	        return null;
	    } catch (IOException ioe) 
	    {
	        System.out.println(ioe);
	        return null;
	    }
	    
	   //下面是解析XML的全过程,比较简单,先取根元素”用户列表“
	   Element root = doc.getDocumentElement();
	   //取“学生“元素列表
	   NodeList nodelist = root.getElementsByTagName(ONELOG);
	   LogBeanVector myvector = new LogBeanVector();
	   System.out.println("----The length of log vecter is:"+Integer.toString(nodelist.getLength())+"------");
	   for (int i = 0; i < nodelist.getLength(); i++) 
	   {
	      //依次取每个元素
	      Element element = (Element) nodelist.item(i);
	      
	      LogBean logbean = new LogBean();
	      logbean.setUsername(element.getAttribute(RUNNER));
	      
	      NodeList names = element.getElementsByTagName(ACTION);
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
			  if(t == null)
				System.out.println("t is null");
			  else
				logbean.setAction(t.getNodeValue());
	      }
      
	      names = element.getElementsByTagName(CONTENT);
	      if((names != null) && (names.getLength() == 1) )
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
			  if(t != null)
				logbean.setContent(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName(ACTIONDATE);
	      if((names != null) && (names.getLength() == 1) )
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
			  if(t != null)
				logbean.setDate(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName(ACTIONTIME);
	      if((names != null) && (names.getLength() == 1) )
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
			  if(t != null)
				logbean.setTmie(t.getNodeValue());
	      }
	      
	      myvector.add(logbean);
	   }
	   System.out.println("readxmlfile end========");
	   return myvector;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -