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