package com.wyq.emp.dao;
import java.util.ArrayList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
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.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import com.wyq.emp.model.Employee;
import com.wyq.emp.service.EmployeeService;
public class EmployeeDao implements EmployeeService {
//XML文件的路径
private String filePath;
//初始化操作文件的路径
public EmployeeDao(String fileUrl){
this.filePath=fileUrl;
}
/*
* 加载XML文档,建立一个解析器工厂
* @param
* @return 返回解析的结果Document对象
* @throws
*/
public Document loadXML(){
//创建一个XML文档的模型对象
Document doc=null;
//String filePath = getClass().getClassLoader().getResource("employees.xml").getPath();
try{
//建立一个解析器工厂
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//创建一个DocumentBuilder 的 DOM 解析器
DocumentBuilder db = dbf.newDocumentBuilder();
//解析 XML 文件
doc = db.parse(filePath);
}catch (Exception e) {
e.printStackTrace();
}
return doc;
}
/*
* 把DOM的内容输出到一个输出流中,保存到XML文档中
* @param doc
* @return 返回解析的结果Document对象
* @throws
*/
public void saveXML(Document doc){
try{
//建立一个解析器工厂
TransformerFactory tf=TransformerFactory.newInstance();
javax.xml.transform.Transformer transformer=tf.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
DOMSource source = new DOMSource(doc);
//利用输出流输出DOM到XML文件中
StreamResult result = new StreamResult(new java.io.File(filePath));
transformer.transform(source, result);
}catch (Exception e) {
e.printStackTrace();
}
}
/*
* 获取所有员工信息
* @param
* @return 返回查找结果 ArrayList<Employee>
* @throws
*/
/* (non-Javadoc)
* @see com.shine.emp.dao.EmployeeService#listEmp()
*/
public ArrayList<Employee> listEmp(){
//创建员工集合 emps 存放所有的员工信息
ArrayList<Employee> emps=new ArrayList<Employee>();
try{
//调用载入employees.xml文件方法
Document doc = loadXML();
//查询所有的员工,获得所有员工列表
NodeList empList = doc.getElementsByTagName("employee");
//依次遍历每个员工
int i=0;
for(;i<empList.getLength();i++){
Element empElement= (Element)empList.item(i);
//封装一个员工对象信息,并添加到员工集合中
Employee emp=new Employee();
emp.setId(empElement.getAttribute("id"));
emp.setName(empElement.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
emp.setSex(empElement.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
emp.setDept(empElement.getElementsByTagName("dept").item(0).getFirstChild().getNodeValue());
emps.add(emp);
}
}catch(Exception e){
e.printStackTrace();
}
return emps;
}
/*
* 根据条件查找匹配的员工信息
* @param empID
* @return 返回查找结果 Employee
* @throws
*/
/* (non-Javadoc)
* @see com.shine.emp.dao.EmployeeService#getEmp(java.lang.String)
*/
public Employee getEmp(String empID){
//创建一个员工对象 emp
Employee emp=new Employee();
//调用载入employees.xml文件方法
Document doc = loadXML();
//查询所有的员工,获得所有员工列表
NodeList empList = doc.getElementsByTagName("employee");
//依次遍历每个员工
int i=0;
for(;i<empList.getLength();i++){
Element temp= (Element)empList.item(i);
//获取当前员工 id
String currID= temp.getAttribute("id");
//如何当前员工 id 与查询条件 员工 id 相匹配,则利用 emp 对象返回当前员工信息
if(currID.equals(empID)){
emp.setId(currID);
emp.setName(temp.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
emp.setSex(temp.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
emp.setDept(temp.getElementsByTagName("dept").item(0).getFirstChild().getNodeValue());
break;
}
}
return emp;
}
/*
* 为Document文档创建一个Employee的节点
* @param employee,doc
* @return 返回节点设置结果 Element 对象
* @throws
*/
public Element setElement(Employee employee,Document doc){
//创建一个节点元素对象
Element emp=null;
try{
Text textseg;
//通过Document对象中的createElement()方法来创建创建一个employee对象
emp=doc.createElement("employee");
//给已经创建的节点添加一个名为 id 的属性,并赋值
emp.setAttribute("id", employee.getId());
//为emp对象创建一个子节点
Element empName=doc.createElement("name");
//设置节点文本
textseg=doc.createTextNode(employee.getName());
empName.appendChild(textseg);
//为emp对象添加一个子节点
emp.appendChild(empName);
Element empSex=doc.createElement("sex");
textseg=doc.createTextNode(employee.getSex());
empSex.appendChild(textseg);
emp.appendChild(empSex);
Element empDept=doc.createElement("dept");
textseg=doc.createTextNode(employee.getDept());
empDept.appendChild(textseg);
emp.appendChild(empDept);
}catch(Exception e){
e.printStackTrace();
}
return emp;
}
/*
* 添加一个员工信息
* @param 员工对象emp
* @return void
* @throws
*/
/* (non-Javadoc)
* @see com.shine.emp.dao.EmployeeService#addEmp(com.shine.emp.model.Employee)
*/
public void addEmp(Employee emp){
try{
//调用载入employees.xml文件方法
Document doc = loadXML();
doc.normalize();
//调用创建节点方法 setElement(Employee empM,Document doc)
Element element=setElement(emp,doc);
//向文档根节点添加已创建的子节点 element
doc.getDocumentElement().appendChild(element);
//保存入XML文档
saveXML(doc);
}catch(Exception e){
e.printStackTrace();
}
}
/*
* 修改员工信息
* @param 员工对象emp
* @return void
* @throws
*/
/* (non-Javadoc)
* @see com.shine.emp.dao.EmployeeService#updEmp(com.shine.emp.model.Employee)
*/
public void updEmp(Employee emp){
try{
//调用载入employees.xml文件方法
Document doc = loadXML();
//查询所有的员工,获得所有员工列表
NodeList empList = doc.getElementsByTagName("employee");
//查找相匹配的员工,并修改员工信息
int i=0;
for(;i<empList.getLength();i++){
Element empElement=(Element)empList.item(i);
//获取当前员工 id
String currID=empElement.getAttribute("id");
//如果当前员工 id 与查询条件的员工 id 相匹配,则修改当前员工信息
if(emp.getId().equals(currID)){
empElement.getElementsByTagName("name").item(0).getFirstChild().setNodeValue(emp.getName());
empElement.getElementsByTagName("sex").item(0).getFirstChild().setNodeValue(emp.getSex());
empElement.getElementsByTagName("dept").item(0).getFirstChild().setNodeValue(emp.getDept());
break;
}
}
//保存入XML文档
saveXML(doc);
}catch(Exception e){
e.printStackTrace();
}
}
/*
* 删除一个员工信息
* @param 员工 id
* @return void
* @throws
*/
/* (non-Javadoc)
* @see com.shine.emp.dao.EmployeeService#delEmp(java.lang.String)
*/
public void delEmp(String empID){
try{
//调用载入employees.xml文件方法
Document doc = loadXML();
//查询所有的员�
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
EmpMS.rar (49个子文件)
EmpMS
.settings
org.eclipse.core.resources.prefs 88B
src
com
wyq
emp
dao
EmployeeDao.java 9KB
action
EmployeeAction.java 4KB
model
Employee.java 746B
service
EmployeeService.java 923B
struts.xml 815B
employees.xml 514B
.project 1KB
WebRoot
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 658B
classes
com
wyq
emp
dao
EmployeeDao.class 6KB
action
EmployeeAction.class 3KB
model
Employee.class 1KB
service
EmployeeService.class 428B
struts.xml 815B
employees.xml 514B
lib
freemarker-2.3.15.jar 859KB
mysql-connector-java-5.0.6-bin.jar 515KB
commons-logging-1.0.4.jar 37KB
cglib-2.1.3.jar 276KB
dom4j-1.6.1.jar 303KB
jaas.jar 101KB
xml-apis.jar 121KB
antlr-2.7.6rc1.jar 427KB
jta.jar 8KB
log4j-1.2.16.jar 470KB
standard.jar 385KB
ehcache-1.1.jar 46KB
ognl-2.7.3.jar 234KB
commons-collections-2.1.1.jar 170KB
asm.jar 26KB
jstl.jar 21KB
xerces-2.6.2.jar 972KB
asm-attrs.jar 17KB
xwork-core-2.1.6.jar 1.49MB
commons-fileupload-1.2.1.jar 56KB
struts2-core-2.1.8.1.jar 738KB
jdbc2_0-stdext.jar 7KB
commons-io-1.3.2.jar 86KB
jaxen-1.1-beta-7.jar 223KB
hibernate3.jar 1.87MB
log4j-1.2.11.jar 343KB
main.jsp 5KB
index.jsp 967B
updemp.jsp 2KB
addemp.jsp 2KB
error.jsp 990B
.mymetadata 288B
.classpath 2KB
.myeclipse
共 49 条
- 1
资源评论
- shan的那边2014-08-31学习参考下 谢谢分享
wyqxrj
- 粉丝: 12
- 资源: 13
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功