开发者学堂课程【XML入门 :学生管理系统实现-添加操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/872
学生管理系统实现-添加操作
1、实现简单的学生管理系统,肯定要学习学生信息,因为现在没有学习数据库,所以可以使用 xml 当做数据,存储学生信息,xml 学习的宗旨就是存储数据,这时就可以用它。
2、创建一个 xml 文件,写一些学生信息。
(1)创建一个工程,命名为 student,注意看下边,这是一个默认的工作空间,可以选择 day06-dode\student,这时就把这个项目放在 day06 里面了,点击完成,这时就创建了一个项目 student。
(2)在这里面首先第一个创建一个 xml 文件,命名为 student.xml。
输入 student,有很多学生信息,比如学生信息都叫 stu 提供,里面会有 id,name,ag。
< sudent >
<stu>
<id>100</id>
<name> zhangsan</name>
<age>20</age>
</stu>
<stu>
<id>101</id>
<name>lisi< /name>
<age>30</age>
</stu>
</ sudent>
然后对这个文件进行操作,模拟一下学生管理系统,但是今天只是做一个模拟效果,还没有界面,因为还没有学到,后面会讲到jst,那时会把这个系统做的更加完善或者一个比较强大的学生管理系统,今天只是做一个最基本的实现。
(3)首先创建第一个包,dom4j 第一步怎么做?导包,把 dom4j 和 xpath 都导进来,直接把 dom4j-1.6.1jar 和 jaxen-1.1-beta-6.jar 复制进来。
(4)在 student 里面创建一个文件夹,命名为 lib,粘贴进来。
(5)选中它右键 build path-add to,加进项目,这时就可以使用 dom4j-1.6.1jar和jaxen-1.1-beta-6.jar。
(6)创建一个包,命名为 cn.itcast.service,表示操作的一个包。
(7)创建一个类,用于学生管理系统里面一个最基本的增筛查操作,命名为 stuservice。
3、实现增加,删除,查询三个方法。
(1)先实现第一个方法,里面要传参数。
public static void addStu(){
要传 id 名称和 age。
(2)可以写 string id,但是这么写有一个问题,比如值很多,有一百个或者一千个,要写这么多个,这么操作太麻烦了,可以使用类进行操作,或者使用类的一个对象进行操作,创建一个类,先创建一个包,命名为 cn.itcast.vo,就是值的对象。
(3)创建一个 class,命名为相关的值,student。
(4)stu 里面有三个值,id,name,age。通过这个类进行操作。
public class Student {
private String id;
private String name ;
private String age;
}
(5)右键 source-Generate Getters and Setters...
(6)点击 select all,点击 OK。就生成了 get,set 方法。
(7)set 方法是设置用的,get 是取值,接下来就可以用类的对象进行操作,在*StuService.java 里面输入以下代码:
public static void addStu( Student student) {
这时会显示有错误,需要导入这个包,vo 包导进来
(8)添加步骤
/*
*1、创建解析器
*2、得到 document
现在要把以下部分整个添加进去:
< stu>
<id>101</id>
<name> lisi< /name>
<age> 30</age>
</stu>
首先先回到根节点
*3、获取到根节点
*4、在根节点上面创建 stu 标签
*5、在 stu 标签上面依次添加 id name age
* 6、在 id name age 上面依次添加值
*
*
*7、回写 xml
*/
值从哪里得到?从 student 对象里面得到,必要的时候需要先设置,这样才能得到值,而这个值通过对象传进来。
//创建解析器
SAXReader saxReader = new SAXReader();
//得到 document
Document document = saxReader. read("src/student . xml" ) ;
注意这时要导入 document 这个包,org.dom4j,这里面有异常直接点击exception-java.lang
//得到根节点
Element root = document. getRootElement();
包导入 org.dom4j
//在根节点上面添加 stu
Element stu = Root addElement("stu");
直接添加,表示返回值是stu标签
//在 stu 标签上面依次添加 id name age 标签
Element id1 = stu. addElement( "id");
Element name1 = stu. addElement( "name");
Element age1 = stu. addElement("age");
//在 id name age 上面依次添加值
id1. setText( student. getId());
name1. setText( student . getName());
age1. setText( student.getAge());
这个值在 student 对象里取到
/ /回写 xm1
OutputFormat format = OutputFormat . createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student .xml"), format);
用 XMLWriter(OutputStrefm out, OutputFormat format) 方法,文件路径
xmlWriter .write( document);
把这个文档写进去
xmlWriter. close();
关闭流,这样就完成添加操作。
(9)接下来调用一下,在创建一个包,这个包用于测试这个方法,命名为cn.itcast.test。
创建一个类,命名为 TestStu
先写第一个方法,这个方法用于测试添加方法。
//测试添加方法
public static void testAdd() {
}
首先调用这个方法,stuservice 调用,要传一个 student 对象,设置一些值,首先先创建 student 对象
//测试添加方法
public static void testAdd()throws Exception {
//设置值
Student stu = new Student( );
stu. setId("103");
stu. setName ( "wangwu" ) ;
stu. setAge("40");]
StuService . addStu(stu) ;
}
有异常就抛出去,这样就完成了一个测试方法。
在 main 里面调用,有异常抛出去
public static void main(String[] args) throws Exception {
testAdd();
}
执行,里面会多加一条,注意写法,创建了很多包,第一个创建是 vo,里面对应的很多属性值,属性名称,stuservice 里面是操作的方法,test 里面是测试的方法,这么写的好处是结构很清晰,每个包就专门负责什么,stuservice 就专门负责方法实现,里面没有调用,而 test 负责方法调用,vo 负责封装对象,层次很明确,很鲜明,这么做可以很好的做程序,开发程序更加分明,结构更加清晰,每个包就专门负责某个操作,不会混合来使用,这就是这样一个添加效果。