wr.java

来自「一个简单的人事管理系统。通过swing、jdbc实现。并利用xml实现输出」· Java 代码 · 共 124 行

JAVA
124
字号
package XML_use;

import java.io.*;
import java.util.Vector;

import javax.swing.table.DefaultTableModel;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.*;

public class WR {

	File file = new File(
	"D:/LW/workspace/RenShi/renshi.xml");
	Document doc = null;
	
	
	public Document create(DefaultTableModel model) {
		try {
			DocumentBuilderFactory factory = DocumentBuilderFactory
			.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			doc = builder.newDocument();
			Element root = doc.createElement("root");
			doc.appendChild(root);
			

			for (int i = 0; i < model.getRowCount(); i++) {
				Element renshi = doc.createElement("renshi");
				Element ID = doc.createElement("ID");
				Element Name = doc.createElement("Name");
				Element Sex = doc.createElement("Sex");
				Element Department = doc.createElement("Department");
				Element Salary = doc.createElement("Salary");
				root.appendChild(renshi);
				renshi.appendChild(ID);
				renshi.appendChild(Name);
				renshi.appendChild(Sex);
				renshi.appendChild(Department);
				renshi.appendChild(Salary);
				
				String[] str = new String[5];

				for (int j = 0; j < 5; j++) {
					str[j] = (String) model.getValueAt(i, j);
				}
				Text t = doc.createTextNode(str[0]);
				ID.appendChild(t);
				t = doc.createTextNode(str[1]);
				Name.appendChild(t);
				t = doc.createTextNode(str[2]);
				Sex.appendChild(t);
				t = doc.createTextNode(str[3]);
				Department.appendChild(t);
				t = doc.createTextNode(str[4]);
				Salary.appendChild(t);
			//	renshi.setAttribute("ID", str[0]);
				
			TransformerFactory tff = TransformerFactory.newInstance();
			Transformer tf = null;
			try {
				tf = tff.newTransformer();
			} catch (TransformerConfigurationException e) {
				e.printStackTrace();
			}
			DOMSource source = new DOMSource(doc);
			StreamResult result = new StreamResult(file);
			try {
				tf.transform(source, result);
			} catch (TransformerException e) {
				e.printStackTrace();
			}
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return doc;
	}
	
	public DefaultTableModel read(){
		String[] s = { "编号(ID)", "名字(Name)", "性别(Sex)", "部门(Department)",
		"工资(Salary)" };
		DefaultTableModel model = new DefaultTableModel(null, s);
		
		try{
			DocumentBuilderFactory factory = DocumentBuilderFactory
			.newInstance();
			DocumentBuilder builder = factory.newDocumentBuilder();
			doc =builder.parse(file);
			NodeList list = doc.getElementsByTagName("renshi");
	
			for(int i=0;i<list.getLength();i++){
				    Vector vec = new Vector();
				    Element renshi=(Element)list.item(i);
				    Node id=renshi.getElementsByTagName("ID").item(0);
					Node name=renshi.getElementsByTagName("Name").item(0);
					Node sex=renshi.getElementsByTagName("Sex").item(0);
					Node department=renshi.getElementsByTagName("Department").item(0);
					Node salary=renshi.getElementsByTagName("Salary").item(0);
			
					String sid=id.getFirstChild().getNodeValue();
					String sname=name.getFirstChild().getNodeValue();
					String ssex=sex.getFirstChild().getNodeValue();
					String sdepartment=department.getFirstChild().getNodeValue();
					String ssalary=salary.getFirstChild().getNodeValue();
		            vec.add(sid);
		            vec.add(sname);
		            vec.add(ssex);
		            vec.add(sdepartment);
		            vec.add(ssalary);
		            model.addRow(vec);
			}
			
			
		}catch (Exception e) {
			e.printStackTrace();
		}return model;
		}
}

⌨️ 快捷键说明

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