数据信息层:
<?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();
}
}
}
分享到:
相关推荐
**MVC分层模式详解** MVC(Model-View-Controller)模式是一种广泛应用于Web应用程序设计的软件架构模式,它的核心思想是将业务逻辑、数据处理和用户界面进行分离,从而实现各部分的独立性和可维护性。在这个例子中...
《Android开发技术》实践教学分层模式初探 在当前科技日新月异的时代,智能手机软件作为新兴的产业,正在全球范围内迅速发展,为满足这一领域的人才需求,许多教育机构开设了专门针对智能移动软件应用的技术专业。...
传统的档案管理模式已无法满足当前高校发展的需求,因此,构建高校档案分层管理模式成为一种必要的创新策略。本文将深入探讨构建高校档案分层管理模式的必要性、意义以及实际操作步骤,并分析其对高等教育发展的重要...
- **简化问题处理**:将复杂的问题分解为几个较简单的子问题来处理,使得问题更加易于理解和解决。 - **增强决策支持**:通过对数据进行合理的分层,可以帮助决策者更好地理解数据背后的信息,从而做出更加明智的...
高中数学分层教学模式是一种创新的教学策略,它依据学生在认知水平、兴趣爱好、接受能力上的差异进行教学活动的个性化设计。分层教学模式旨在克服传统教学方式中统一教学内容、教学方法和评价标准所带来的一系列问题...
1. 分层方式的选择与理由:考虑到西部地州院校教学资源紧张、师资力量不足的现实情况,采用“异层同班异法”的分层模式,这种模式不需要对教学秩序做大的调整,更适用于当地教育环境。 2. 分层教学目标设计:对于...
分层教学模式是基于学生的学习能力差异而设计的教学策略,它能更贴切地满足不同学生的个性化学习需求,提升班级整体的教学效率和学习效果。小学语文教育作为基础教育的重要组成部分,在实施分层教学模式时需要特别...
在实践教学中,采用分层教学模式是一种有效提升教学质量的方法,它旨在满足不同学习水平学生的需求,促进个性化教学。本文将深入探讨在Java程序设计基础课中实施分层教学模式的研究。 分层教学模式基于学生的个体...
SpringMVC体系分层模式原理图解 标题:SpringMVC体系分层模式原理图解 知识点一:MVC模式简介 MVC全名是Model View Controller,是一种设计创建Web应用程序表现层的模式。MVC模式将应用程序分为三个主要部分:...
为了解决上述问题,我们将原有的Model1模式升级为分层模式,即界面层、业务逻辑层和数据访问层(DAO)三者分离: - **界面层**:负责展示数据,包括视图和控制器。 - **业务逻辑层**:封装业务逻辑操作,通常使用类...
在IT行业中,分层架构是一种常见的软件设计模式,它将复杂的应用程序分解为多个相互独立、职责明确的层次。在DotNet开发环境中,分层架构是实现可维护性、可扩展性和可重用性的关键策略。本文将深入探讨DotNet分层...
### 架构模式介绍 ...管道过滤模式适用于处理大量数据流的应用场景,而分层模式则更适合需要逐级抽象和高度可扩展性的系统。在实际项目中,开发团队需要根据项目的具体需求和技术背景来选择最适合的架构模式。
【项目分层教学模式在C语言程序设计课程教学中的应用】 C语言作为一门融合底层机器语言和高级语言特性的编程语言,广泛应用于系统开发和软件工程。然而,由于其复杂性和抽象性,初学者往往面临较大的学习挑战。为了...
这种层次化的结构使得系统能够从简单的特征逐步构建到更复杂的概念。 - **实现机制**:每一层包含多个节点,这些节点之间形成连接。较低层级处理的基础特征会作为输入传递给更高层级,而高层级则基于这些输入进行更...
【标题】:“33传统的可扩展架构模式:分层架构和SOA1” 【描述】:“1. C/S架构、B/S架构 3. 逻辑分层架构 1. 服务” 【标签】:“微服务 mvc 操作系统” 本文将深入探讨两种传统可扩展架构模式:分层架构和面向...
在IT行业中,分层架构是一种常见的软件设计模式,它将应用程序的不同部分划分为各个独立的层,以提高代码的可维护性、可扩展性和模块化。在这个“自己写的一个分层的小框架”中,我们可以看到它主要适用于PHP开发,...
本示例是基于MVC(Model-View-Controller)分层模式,利用Cookie技术来实现用户登录后三天内自动免登陆的效果。 MVC模式是一种常见的软件设计模式,它将业务逻辑、数据和用户界面分离,使得开发、测试和维护变得更加...
通过构建一个简单的NGuestBook留言本系统,我们将逐步解析分层架构的各个组成部分,包括系统需求分析、数据库设计、接口实现、依赖注入、数据访问层的不同实现方式以及业务逻辑层和表示层的构建。 【标签】:“基于...
文件`JdbcDemo`可能是一个简单的Java演示程序,展示了如何在分层架构中使用接口进行数据库操作。通过运行这个示例,你可以更好地理解接口在分层架构中的作用和实现方式。 总结来说,基于接口的分层实现是软件设计中...
### 基于.NET平台的分层架构与设计模式 #### 1. 综述 ##### 1.1 课题背景 ###### 1.1.1 B/S系统的概述 B/S(Browser/Server)结构是一种随互联网技术发展而演变出的新架构形式,它通过将用户的界面展示与业务...