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

📄 dommanager.java

📁 用java 实现的一个任务管理器
💻 JAVA
字号:
package com.fang.server.dao;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Vector;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;

import com.fang.common.core.FTask;


public class DOMManager {
    
	private String inFile;
	
	
	//DOM内存树
	private static    Document doc ;
	
	static {
		DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
		   DocumentBuilder db = null; 
		  try{ 
		   db = dbf.newDocumentBuilder();
		   
		   File file=new File("tasks.xml");
		   System.out.println(file.exists());
		   doc = db.parse("students.xml");
		  }catch(Exception e){
			  System.out.println("找不到数据文件");
		  }
	}
	
	
	public DOMManager(String inFile){
		this.inFile=inFile;
		
	}
    
	public DOMManager(){
		this.inFile="students.xml";
	}
	
	
	
	public Vector<FTask> fillTaskArray() throws Exception {
		
		//创建一个空的vector,用来存放taskBean
		   Vector<FTask>  task_Vector=new Vector<FTask>();
		   
     /**   if(doc==null){
        	//为解析XML作准备,创建DocumentBuilderFactory实例,指定DocumentBuilder
 		   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
 		   DocumentBuilder db = null; 
 		   db = dbf.newDocumentBuilder();
 		   
 		   File file=new File("tasks.xml");
 		   System.out.println(file.exists());
 		   doc = db.parse("tasks.xml"); 
        }*/
		   
      //下面是解析XML的全过程,
	    Element root = doc.getDocumentElement(); 
	    System.out.println(root);
	    
    //取"task"元素列表
	    NodeList tasks = root.getElementsByTagName("task");
	   
	    for (int i = 0; i < tasks.getLength(); i++) {
        //依次取每个"task"元素
	    	System.out.println("---------------------"+tasks.getLength());
	    	Element itask = (Element) tasks.item(i);
	    	 System.out.println(itask); 
            //创建一个task的Bean实例
	    	FTask taskBean = new FTask(); 
	    	
             //取学生的性别属性
	    	taskBean.setId(Integer.parseInt(itask.getAttribute("id")));
	    	taskBean.setCmdType(Integer.parseInt(itask.getAttribute("taskType")));
	    	System.out.println(taskBean.getId());
	    	System.out.println(taskBean.getCmdType());
     
	    	//取"name"元素,下面类同
	    	NodeList names = itask.getElementsByTagName("name"); 
	    	if (names.getLength() == 1) { 
	    	Element e = (Element) names.item(0); 
	    	Text t = (Text) e.getFirstChild(); 
	    	taskBean.setTaskname(t.getNodeValue()); 
	    	System.out.println(taskBean.getTaskname());
	        }
	    	
	    	NodeList times=itask.getElementsByTagName("starttime");
	    	if(times.getLength()==1){
	    		Element e=(Element)times.item(0);
	    		Text t = (Text)e.getFirstChild();
                taskBean.setStarttime(Long.valueOf(t.getNodeValue()));	
                System.out.println(taskBean.getStarttime());
	    	}
	    	
	    	NodeList Itimes=itask.getElementsByTagName("internal");
	    	if(Itimes.getLength()==1){
	    		Element e=(Element)Itimes.item(0);
	    		Text t = (Text)e.getFirstChild();
                taskBean.setInternal(Long.valueOf(t.getNodeValue()));	
                System.out.println(taskBean.getInternal());
	    	}
	    	
	    	NodeList status=itask.getElementsByTagName("status");
	    	if(status.getLength()==1){
	    		Element e=(Element)status.item(0);
	    		Text t = (Text)e.getFirstChild();
                taskBean.setStatus(Integer.valueOf(t.getNodeValue()));	
                System.out.println(taskBean.getStatus());
	    	}
	    	
	    	NodeList params=itask.getElementsByTagName("param");
	    	String [] args=new String[params.getLength()];
	    	       for(int j=0;j<params.getLength();j++){
	    	    	   Element e=(Element)params.item(j);
	    	    	   Text t=(Text)e.getFirstChild();
	    	    	   args[j]=t.getNodeValue();
	    	       }
	    	taskBean.setCmdParam(args);
	    	System.out.println(taskBean.getCmdParam());
	    	task_Vector.add(taskBean);
	    }
	    return task_Vector;
	}
	
	public synchronized   void addDOMElement(FTask task) throws FileNotFoundException{
		//建立"task"元素
    	Element etask = doc.createElement("task");
		
    	etask.setAttribute("id", Integer.toString(task.getId()));
    	etask.setAttribute("taskType", Integer.toString(task.getCmdType()));
		
    	 //建立"name"元素,添加到任务下面,下同 
        Element name = doc.createElement("name"); 
        etask.appendChild(name); 
        Text tName = doc.createTextNode(task.getTaskname());
        name.appendChild(tName);
        
        Element starttime = doc.createElement("starttime"); 
        etask.appendChild(starttime); 
        Text time = doc.createTextNode(Long.toString(task.getStarttime()));
        starttime.appendChild(time);
        
        Element internal = doc.createElement("internal"); 
        etask.appendChild(internal); 
        Text time1 = doc.createTextNode(Long.toString(task.getInternal()));
        internal.appendChild(time1);
  	
        Element status = doc.createElement("status"); 
        etask.appendChild(status); 
        Text Tstatus = doc.createTextNode(Long.toString(task.getInternal()));
        status.appendChild(Tstatus);
        
        String [] args=task.getCmdParam();
        for(int j=0;j<args.length;j++){
      	  Element param=doc.createElement("param");
      	  etask.appendChild(param);
      	  Text Tparam=doc.createTextNode(args[j]);
      	  param.appendChild(Tparam);
        }
        
        //添加到doc 的根元素
        Element root=doc.getDocumentElement();
        root.appendChild(etask);
        
        this.outFlashDOM();
      
	}
    
	public  synchronized void delDOMElement(FTask task) throws FileNotFoundException{
		//下面是解析XML的全过程,
	    Element root = doc.getDocumentElement(); 
	    System.out.println(root);
		
	  //取"task"元素列表
	    NodeList tasks = root.getElementsByTagName("task");
	    Element itask = null;
	    
	    for (int i = 0; i < tasks.getLength(); i++) {
	        itask = (Element) tasks.item(i);
	    	if(task.getId()==Integer.parseInt(itask.getAttribute("id")))
	    		break;
	    }
	    
	    root.removeChild(itask);
	    this.outFlashDOM();
	}

	public  synchronized void updateDOMElement(FTask task) throws FileNotFoundException{
		//建立"task"元素
    	Element etask = doc.createElement("task");
		
    	etask.setAttribute("id", Integer.toString(task.getId()));
    	etask.setAttribute("taskType", Integer.toString(task.getCmdType()));
		
    	 //建立"name"元素,添加到任务下面,下同 
        Element name = doc.createElement("name"); 
        etask.appendChild(name); 
        Text tName = doc.createTextNode(task.getTaskname());
        name.appendChild(tName);
        
        Element starttime = doc.createElement("starttime"); 
        etask.appendChild(starttime); 
        Text time = doc.createTextNode(Long.toString(task.getStarttime()));
        starttime.appendChild(time);
        
        Element internal = doc.createElement("internal"); 
        etask.appendChild(internal); 
        Text time1 = doc.createTextNode(Long.toString(task.getInternal()));
        internal.appendChild(time1);
  	
        Element status = doc.createElement("status"); 
        etask.appendChild(status); 
        Text Tstatus = doc.createTextNode(Long.toString(task.getInternal()));
        status.appendChild(Tstatus);
        
        String [] args=task.getCmdParam();
        for(int j=0;j<args.length;j++){
      	  Element param=doc.createElement("param");
      	  etask.appendChild(param);
      	  Text Tparam=doc.createTextNode(args[j]);
      	  param.appendChild(Tparam);
        }
        
        //查找oldElement
      
	    Element root = doc.getDocumentElement(); 
	    System.out.println(root);
	  
	    NodeList tasks = root.getElementsByTagName("task");
	    Element itask = null;
	    
	    for (int i = 0; i < tasks.getLength(); i++) {
	        itask = (Element) tasks.item(i);
	    	if(task.getId()==Integer.parseInt(itask.getAttribute("id")))
	    		break;
	    }
		
	    root.replaceChild(etask, itask);
	    
			this.outFlashDOM();
		
	}
	
	private void  outFlashDOM() throws FileNotFoundException{
		
		//把XML文档输出到指定的文件
        FileOutputStream outStream = new FileOutputStream(inFile);
        OutputStreamWriter outWriter = new OutputStreamWriter(outStream);
        
        FileOutputStream outStream1 = new FileOutputStream("fangdebug.xml");
        OutputStreamWriter outWriter1 = new OutputStreamWriter(outStream1);
        
        callWriteXmlFile(doc, outWriter, "GB2312");
        callWriteXmlFile(doc, outWriter1, "GB2312");
		
	}
	
	public static void callWriteXmlFile(Document doc, Writer w,
            String encoding) {
          try {
                 // Prepare the DOM document for writing
                    Source source = new DOMSource(doc);

                 // Prepare the output file
                    Result result = new StreamResult(w);

                // Write the DOM document to the file
                    Transformer xformer = TransformerFactory.newInstance()
                                              .newTransformer();
                    xformer.setOutputProperty(OutputKeys.ENCODING, encoding);
                    xformer.transform(source, result);
                }catch (TransformerConfigurationException e) {
                         e.printStackTrace();
                              }
                 catch (TransformerException e) {
                         e.printStackTrace();
                        }
}
	
}


⌨️ 快捷键说明

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