📄 readwritefarchivexml.java
字号:
//package com.stsc.archive.xml;
package com.stsc.archive.backup;
/*
读写与数据库fArchive表对应的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 ReadWritefArchiveXML
{
public boolean writeXMLFile(String outFile, fArchiveVector myvector) throws Exception
{
if( (outFile == null) || (myvector == null) )
return false;
if(CopyFile.createDir(outFile) == false) //建立目录;
{
return false;
}
System.out.println("writexmlfile begin");
//为解析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("备份信息--文件表");
//根元素添加上文档
doc.appendChild(root);
System.out.println("writexmlfile begin before for");
ElementToDoc.addArchiveElement(doc, root, myvector, outFile);//modify 6.4
/** for (int i = 0; i < myvector.getLength(); i++)
{
Element student = doc.createElement("文件表");
student.setAttribute("序号", Integer.toString(myvector.get(i).getSerialno()));
root.appendChild(student);
Element name = doc.createElement("状态");
student.appendChild(name);
Text tName = doc.createTextNode(Integer.toString(myvector.get(i).getStatus()));
name.appendChild(tName);
name = doc.createElement("删除标记");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getDeleted());
name.appendChild(tName);
name = doc.createElement("同步标记");
student.appendChild(name);
tName = doc.createTextNode(Integer.toString(myvector.get(i).getRepflag()));
name.appendChild(tName);
name = doc.createElement("档案种类");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getArchivetype());
name.appendChild(tName);
name = doc.createElement("文件种类载体种类");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getFiletype());
name.appendChild(tName);
name = doc.createElement("题名分说明");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getTitle());
name.appendChild(tName);
name = doc.createElement("一般文献类型标识");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getLiteraturetype());
name.appendChild(tName);
name = doc.createElement("题名说明");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getTitleremark());
name.appendChild(tName);
name = doc.createElement("文件编号图号页号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getFileno());
name.appendChild(tName);
name = doc.createElement("成文日期载体形成时间");
student.appendChild(name);
Date nowdate = myvector.get(i).getDecryptiondate();
if(nowdate != null)
{
tName = doc.createTextNode(nowdate.toString());
name.appendChild(tName);
}
name = doc.createElement("主题词");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getKeyword());
name.appendChild(tName);
name = doc.createElement("文件年代工程代号载体年代");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getCode());
name.appendChild(tName);
name = doc.createElement("类目号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getCategory());
name.appendChild(tName);
name = doc.createElement("页数");
student.appendChild(name);
tName = doc.createTextNode(Integer.toString(myvector.get(i).getPagenumber()));
name.appendChild(tName);
name = doc.createElement("责任者");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getDuty());
name.appendChild(tName);
name = doc.createElement("其他责任者");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getOtherduty());
name.appendChild(tName);
name = doc.createElement("电子文档名");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getElectronicfilename());
name.appendChild(tName);
name = doc.createElement("附件标题");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getAttachmenttitle());
name.appendChild(tName);
name = doc.createElement("备注");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getMemo());
name.appendChild(tName);
name = doc.createElement("份数");
student.appendChild(name);
tName = doc.createTextNode(Integer.toString(myvector.get(i).getCopys()));
name.appendChild(tName);
name = doc.createElement("实物借出份数");
student.appendChild(name);
tName = doc.createTextNode(Integer.toString(myvector.get(i).getLendnum()));
name.appendChild(tName);
name = doc.createElement("密级");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getSecurityclass());
name.appendChild(tName);
System.out.println("aaaaaaaaaaaaaaaaaaa");
name = doc.createElement("保密期限");
student.appendChild(name);
tName = doc.createTextNode(Integer.toString(myvector.get(i).getSecurityterm()));
name.appendChild(tName);
System.out.println("bbbbbbbbbbbbbbbbbbbbbbbb");
name = doc.createElement("解密日期");
student.appendChild(name);
nowdate = myvector.get(i).getDecryptiondate();
if(nowdate == null)
System.out.println("date is null");
else
{
tName = doc.createTextNode(myvector.get(i).getDecryptiondate().toString());
name.appendChild(tName);
}
name = doc.createElement("保管期限");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getRetentionperiod());//6.3 modify int to string
if(tName != null)
name.appendChild(tName);
name = doc.createElement("归档日期");
student.appendChild(name);
nowdate = myvector.get(i).getArchivedate();
if(nowdate != null)
{
tName = doc.createTextNode(nowdate.toString());
name.appendChild(tName);
}
name = doc.createElement("销毁日期");
student.appendChild(name);
nowdate = myvector.get(i).getDestroydate();
if(nowdate != null)
{
tName = doc.createTextNode(nowdate.toString());
name.appendChild(tName);
}
name = doc.createElement("存址号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getArchivalcode());
name.appendChild(tName);
name = doc.createElement("全宗号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getDossierno());
name.appendChild(tName);
name = doc.createElement("电子档号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getArchiveno());
name.appendChild(tName);
name = doc.createElement("件号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getUnitno());
name.appendChild(tName);
name = doc.createElement("历次物理归档情况");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getFilingtrace());
name.appendChild(tName);
name = doc.createElement("移交人");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getHandover());
name.appendChild(tName);
name = doc.createElement("归档稿本版本情况说明");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getFilingscripts());
name.appendChild(tName);
name = doc.createElement("档案人员再次鉴定时间");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getReappraisedates());
name.appendChild(tName);
name = doc.createElement("附注");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getAnnotation());
name.appendChild(tName);
name = doc.createElement("提要");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getAbstractmsg());
name.appendChild(tName);
name = doc.createElement("传阅意见");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getSuggest());
name.appendChild(tName);
System.out.println("ccccccccccccccccc");
name = doc.createElement("流程跟踪");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getRecordtransfer());
name.appendChild(tName);
name = doc.createElement("案卷号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getVolumnNo());
name.appendChild(tName);
//5.23 add
String filepathname = myvector.get(i).getAttachmentPath();
name = doc.createElement("附件路径");
student.appendChild(name);
tName = doc.createTextNode(filepathname);
name.appendChild(tName);
//6.3 add
// String filepathname = myvector.get(i).getAttachmentPath();
name = doc.createElement("流水号");
student.appendChild(name);
tName = doc.createTextNode(myvector.get(i).getFlowNo());
name.appendChild(tName);
//-----备份附件---------------------------------
if( (filepathname != null) && (filepathname.length() > 0) )
{
String backFile = outFile + Integer.toString(i) + ".Attachment";
CopyFile.copy(backFile, filepathname);
name = doc.createElement("附件备份路径");
student.appendChild(name);
tName = doc.createTextNode(backFile);
name.appendChild(tName);
}
//==============================================
}*/
//=============================================================
DOMSource doms = new DOMSource (doc);
//Input. Document is an extended class of Node, and therefore
//can be used here.
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 fArchiveVector 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();
return ElementToDoc.readArchive(root); //modify 2003.6.4
/**
NodeList nodelist = root.getElementsByTagName("文件表");
if(nodelist.getLength() < 1)
{
return null;
}
fArchiveVector myvector = new fArchiveVector();
System.out.println("----The length of vecter is:"+Integer.toString(nodelist.getLength())+"------");
for (int i = 0; i < nodelist.getLength(); i++)
{
//依次取每个元素
Element element = (Element) nodelist.item(i);
fArchive farchive = new fArchive();
farchive.setSerialno(Integer.parseInt(element.getAttribute("序号")));
NodeList names = element.getElementsByTagName("状态");
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
farchive.setStatus(Integer.parseInt(t.getNodeValue()));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -