📄 appendlogxml.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 + -