数据信息层:
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student id="1">
<name>soso</name>
<password>123</password>
<age>10</age>
</student>
</students>
javabean:
package cn.itcast.xml.parser.example2;
public class Student {
private int id;
private String name;
private String password;
private int age;
public Student() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
DAO:
package cn.itcast.xml.parser.example2;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
//数据访问层(对XML文件的CURD操作)
public class StudentDao {
private Document getDocument() throws Exception{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/cn/itcast/xml/parser/example2/students.xml"));
return document;
}
private void writerToFile(Document document)throws Exception{
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
Writer writer = new OutputStreamWriter(new FileOutputStream("src/cn/itcast/xml/parser/example2/students.xml"),"UTF-8");
XMLWriter xmlWriter = new XMLWriter(writer,format);
xmlWriter.write(document);
xmlWriter.close();
}
public void create(Student student) throws Exception{
/*
Document document = this.getDocument();
Element rootElement = document.getRootElement();//<students>根元素和document已绑定在一起
Element studentElement = rootElement.addElement("student");//<student>
studentElement.addElement("name").setText(student.getName());//<name>jack</name>
studentElement.addElement("password").setText(student.getPassword());//<password>jack</password>
studentElement.addElement("age").setText(student.getAge()+"");//<age>jack</age>
studentElement.addAttribute("id",student.getId()+"");
this.writerToFile(document);
*/
//必须保存在第一次填加学员时执行,第N次不执行
Document document = DocumentHelper.createDocument();
Element rootElement = DocumentHelper.createElement("students");
//思路:第N次判段是否已有根元素,如果有,不需要再创建根元素,直接将子元素加到<students>里面
Element studentElement = rootElement.addElement("student");//<student>
studentElement.addElement("name").setText(student.getName());//<name>jack</name>
studentElement.addElement("password").setText(student.getPassword());//<password>jack</password>
studentElement.addElement("age").setText(student.getAge()+"");//<age>jack</age>
studentElement.addAttribute("id",student.getId()+"");
document.add(rootElement);
this.writerToFile(document);
}
public void delete(String id) throws Exception{
Document document = this.getDocument();
String xpath = "//student[@id='"+id+"']";
Element element = (Element) document.selectSingleNode(xpath);
if(element!=null){
element.getParent().remove(element);
this.writerToFile(document);
}else{
throw new RuntimeException("查无此学员");
}
}
}
UI:
package cn.itcast.xml.parser.example2;
import java.util.Scanner;
public class StudentUI {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
/*
System.out.print("需要删除学员的编号:");
String id = scanner.nextLine();
StudentDao studentDao = new StudentDao();
try {
studentDao.delete(id);
System.out.println("删除成功");
} catch (Exception e) {
e.printStackTrace();
}
*/
System.out.print("姓名:");
String name = scanner.nextLine();
System.out.print("密码:");
String password = scanner.nextLine();
System.out.print("年龄:");
String age = scanner.nextLine();
Student student = new Student();
student.setId(Util.getId());
student.setName(name);
student.setPassword(password);
student.setAge(Integer.parseInt(age));
StudentDao studentDao = new StudentDao();
try {
studentDao.create(student);
System.out.println("成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
本系统基于六种设计模式,运用到的设计模式有备忘录模式,简单工厂模式,迭代器模式,状态模式,模版方法模式,单例模式。 具体实现过程、UML类图以及实现效果详见如下项目说明地址: ... 该系统为绘图系统,该系统通过...
设计模式的本质特征是模块独立性和接口简单,因为MVC系统架构难于理解,故采用分层模型对系统进行设计,系统的特点是专门设计了一层数据库的屏蔽层,用来屏蔽数据库的差异性。
本例是一个分层次的实例,里面简单清晰的逻辑说明了设计模式之---创建者模式
利用cookie技术实现简单的三天免登陆功能
Geterohier QML组装要求中的示例模式异构层次结构:Qt> 5.2.1为简单起见固定了模型,在构造函数中创建了子代
这是一个是MVVM模式实现的在tableview上分层选择省市区的demo
设计模式通常应用在设计阶段,分析阶段已经对系统分层,然后也对每个层都提取了一些类。这个时候,如何组织和使用这些类就是我们的设计模式要研究的问题了。本文档是一些设计模式的简单实现代码。
这个就简单说一下,所谓四层架构就是 Model实体层,Dao层(数据访问层也就是从数据库中查数据),Service层(业务逻辑层,也就是处理好数据),Controller层(视图控制层,在前后端分离的情况下就是写接口响应前端...
1.1.1 精心设计的框架是简单的 2 1.1.2 精心设计的框架设计代价高 3 1.1.3 精心设计的框架充满利弊权衡 3 1.1.4 精心设计的框架应该借鉴过去 4 1.1.5 精心设计的框架要考虑未来发展 4 1.1.6 精心设计的...
4.1.3 根据DDD进行分层 4.2 轮廓 4.2.1 领域模型示例的问题/特性 4.2.2 逐个处理特性 4.2.3 到目前为止的领域模型 4.3 初次尝试将UI与领域模型挂接 4.3.1 基本目标 4.3.2 简单UI的当前焦点 4.3.3 为客户列出订单 ...
MVC模式写的投票系统 值得学习 封装了JDBC的方法 后台有明确的分层 前台很简单,数据库已经上传,在DBBean.java中修改数据库连接属性就可以使用
4.0 引入简单工厂,结合策略模式对游戏优化并加入动态加速功能,将原GUI+绘蛇变更为,自制Control控件, 关卡不变(解决了双缓冲无法解决屏幕闪烁问题) 5.0 美化游戏,应用分层理念封装各实体类 制作人: 董...
1.本demo严格按照MVC的分层模式采用myeclipse编写,可直接运行,服务器为tomcat,数据库为mysql。 2.数据库操作使用c3p0连接池和dbtuils组件,对表的CURD,二者搭配感觉很easy,没有使用hibernate。 3.控制器采用...
1.1.1 精心设计的框架是简单的 2 1.1.2 精心设计的框架设计代价高 3 1.1.3 精心设计的框架充满利弊权衡 3 1.1.4 精心设计的框架应该借鉴过去 4 1.1.5 精心设计的框架要考虑未来发展 4 1.1.6 精心设计的...
体会简单工厂模式的美妙 工厂不好用了? 用“策略模式”是一种好策略 反射一一程序员的快乐! 会修电脑不会修收音机?一一聊设计模式原则 三层架构,分层开发 无熟人难办事?一一聊设计模式迪米特法则 有了门面,程序员...
2.2.4 分层架构原则 2.3 小结 第3章 命名规范 3.1 大小写约定 3.1.1 标识符的大小写规则 3.1.2 首字母缩写词的大小写 3.1.3 复合词和常用术语的大小写 3.1.4 是否区分大小写 3.2 通用命名约定 ...
简单来说,流量就是用户作用在京东页面上,产生一系列行为数据的集合。 ② 流量数据的来源 数据来源主要是移动端和PC端,以及线下店、外部采买、合作商的数据等。 这些数据是如何流转到数仓的呢? 2. 京东零售——...
分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统。 在网站的分层架构中,常见的为3...
但是编程师按照MVC设计模式分层实现的。 原项目是由Oracle数据库,我的电脑是没有所以现在我把项目改成了MySQL数据库的。数据库的jar包同项目一起打包。 如果需要修改数据库,用户,密码请在...
2.2.4 分层架构原则 2.3 小结 第3章 命名规范 3.1 大小写约定 3.1.1 标识符的大小写规则 3.1.2 首字母缩写词的大小写 3.1.3 复合词和常用术语的大小写 3.1.4 是否区分大小写 3.2 通用命名约定 ...