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

📄 readwritefvolumnxml.java

📁 一套完整的档案管理系统
💻 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 ReadWritefVolumnXML
{
	public boolean writeXMLFile(String outFile, fVolumnVector 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("备份信息--案卷表");
	    //根元素添加上文档
	    doc.appendChild(root); 
	    
	    for (int i = 0; i < myvector.getLength(); i++) 
	    {
			ElementToDoc.addVolumnElement(doc, root, myvector.get(i));
/**
	       Element student = doc.createElement("案卷表");
	       student.setAttribute("自动编号", Integer.toString(myvector.get(i).getVolumnid()));
	       root.appendChild(student);
	       
	       Element name = doc.createElement("档案种类");
	       student.appendChild(name);
	       Text tName = doc.createTextNode(myvector.get(i).getArchivetype());
	       name.appendChild(tName);
	       
	       name = doc.createElement("案卷号");
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getVolumnno());
	       name.appendChild(tName);
	       
	       name = doc.createElement("案卷标题");
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getVolumntitle());
	       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(myvector.get(i).getRetentionperiod());
	       name.appendChild(tName);
	       
	       name = doc.createElement("案卷起始年月");
	       student.appendChild(name);
	       Date nowdate = myvector.get(i).getStartdate();
	       if(nowdate != null)
	       {
		       tName = doc.createTextNode(nowdate.toString());
		       name.appendChild(tName);
		    }
	       
	       name = doc.createElement("案卷截止年月");
	       student.appendChild(name);
	       nowdate = myvector.get(i).getEnddate();
	       if(nowdate != null)
	       {
		       tName = doc.createTextNode(nowdate.toString());
		       name.appendChild(tName);
		    }
	       
	       name = doc.createElement("案卷总件数");
	       student.appendChild(name);
	       tName = doc.createTextNode(Integer.toString(myvector.get(i).getTotalnum()));
	       name.appendChild(tName);
	       
	       name = doc.createElement("案卷总页数");
	       student.appendChild(name);
	       tName = doc.createTextNode(Integer.toString(myvector.get(i).getTotalpage()));
	       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).getSecurityclass());
	       name.appendChild(tName);
	       
	       name = doc.createElement("立卷单位");
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getArchiveunit());
	       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).getRemark());
	       name.appendChild(tName);
	       
	       name = doc.createElement("状态");
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getStatus());
	       name.appendChild(tName);
	       
	       name = doc.createElement("提要");
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getAbstract1());
	       name.appendChild(tName);
	       
	       //add,2003.5.22
	       name = doc.createElement("删除标记");
	       student.appendChild(name);
	       tName = doc.createTextNode(myvector.get(i).getDeleted());
	       name.appendChild(tName);*/
	   }
	   //=============================================================
	   
/**	   
	   //把XML文档输出到指定的文件
	   FileOutputStream outStream = new FileOutputStream(outFile);
	   OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
	   System.out.println("------This is still ok1-------");
	   try{
	   ((XmlDocument) doc).write(outWriter, "GB2312");
		}catch (Exception e) 
		{
			System.out.println("why"+e.getMessage());
		}
	   System.out.println("------This is still ok2-------");
	   outWriter.close();
	   outStream.close();*/ //出错,有异常
	   
	   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 fVolumnVector 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.readVolumn(root);
	   
/**	   NodeList nodelist = root.getElementsByTagName("案卷表");
	   if(nodelist.getLength() < 1)
		{
		   return null;
		}

	   fVolumnVector myvector = new fVolumnVector();
	   System.out.println("----The length of fVolumnVector is:"+Integer.toString(nodelist.getLength())+"------");
	   for (int i = 0; i < nodelist.getLength(); i++) 
	   {
	      //依次取每个元素
	      Element element = (Element) nodelist.item(i);
	      
	      fVolumn tmp = new fVolumn();
	      tmp.setVolumnid(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)
	          	tmp.setArchivetype(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("案卷号");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setVolumnno(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("案卷标题");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setVolumntitle(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("工程代号");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setCode(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("类目号");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setCategory(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("保管期限");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setRetentionperiod(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("案卷起始年月");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setStartdate(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("案卷截止年月");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setEnddate(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("案卷总件数");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setTotalnum(Integer.parseInt(t.getNodeValue()));
	      }
	      
	      names = element.getElementsByTagName("案卷总页数");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setTotalpage(Integer.parseInt(t.getNodeValue()));
	      }
	      
	      names = element.getElementsByTagName("责任者");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setDuty(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("责任者");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setDuty(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("密级");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setSecurityclass(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("立卷单位");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setArchiveunit(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("主题词");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setKeyword(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("备注");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setRemark(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("状态");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setStatus(t.getNodeValue());
	      }
	      
	      names = element.getElementsByTagName("提要");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setAbstract1(t.getNodeValue());
	      }
	      
	      //add
	      names = element.getElementsByTagName("删除标记");
	      if (names.getLength() == 1) 
	      {
	          Element e = (Element) names.item(0);
	          Text t = (Text) e.getFirstChild();
	          if(t != null)
	          	tmp.setDeleted(t.getNodeValue());
	      }
	      
	      myvector.add(tmp);
	   }
	   
	   return myvector;*/
	}
}

⌨️ 快捷键说明

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