开发者学堂课程【XML入门 :学生管理系统实现-删除操作】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/37/detail/873
学生管理系统实现-删除操作
1、删除操作,把以下部分删除:
<stu>
<id>103</id>
<name>wangwu< /name>
<age>40</age>
</stu>
可以根据 id 删,也可以根据 name 删,一般都是根据 id 进行删除。
2、//删除 根据学生的 id 删除
注意现在是根据学生 id 删除,要传一个参数。
public static void delStu(string id) {
}
首先前两步是一样的,通过 id 删除这个思想一定要掌握,
/*
*1、创建解析器
*2、得到 document
*
* */
回到 student.xml,现在是要根据 id 进行删除,就等于把传的 id 和这里面的 id 做比较,如果相同,就把以下部分都删掉:
< stu>
<id>100< /id>
<name> zhangsan< / name>
<age>20</age>
</stu>
3、核心的原理就是这么来做,具体是怎么来做,先判断这两个 id 是否相同,获取所有 id,遍历是否相同,如果相同,就把 id 所在的 stu 全都删掉即可。
*3、获取到所有的 id
*使用 xpath//id 返回 list 集合
*5、判断集合里面的 id 和 传递的 id 是否相同
*6、如果相同,把 id 所在的 stu 删除
stu 删除先获取 stu 的父节点 sudent,通过 sudent 删掉,这是它的一个基本的步骤。
4、前两步都是一样的,直接复制。
//创建解析器
SAXReader saxReader = new SAXReader() ;
//得到 document
Document document = saxReader . read("src/student . xml");
第三步:
//获取所有的 id,xpath: //id
list<Node> list = document. selectNodes("//id");
list 导入包 utill,Node 导入包 dom4j
//遍历 list 集合
for (Node node : list) {
//node 是每一个 id 的元素
要判断集合里面的 id 和传递的 id 是否相同
//得到 id 的值
String idv= node . getText();
//判断 idv 和传递的 id 是否相同
if( idv.equals(id)) {
//id 相同
// 得到 stu 节点
Element stu = node . getParent( );
相同就要获取 id 的 stu,id 是 stu 的父节点。
//获取 stu 的父节点
Element student = stu. getParent();
要获得 stu 的节点,因为要把 stu 整个都删掉
//刪除 stu
student. remove(stu);
}
}
回写不要写循环里面,因为循环没有完成,如果回写,会有问题。写在循环的外面。
//回写 xml
OutputFormat format = OutputFormat. createPrettyPrint();
XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/student . xml"), format);
xmlWriter . write( document);
xmlWriter . close();
这样就完成了一个删除的操作。
5、首先根据 id 进行删除,先得到所有的 id,遍历 list 集合,得到 node 节点的值和传过来的值做比较,如果这两个值相同,因为需要整个,所以首先需要得到 id 的父节点,得到 stu 的父节点,通过 stu 父节点把整个都删掉,最后进行回写操作,这是一个删除的操作。
6、再写一个方法,有异常抛出去。
//测试删除方法
public static void testDel()throws Exception{
StuService. delStu("103");
}
这样就完成一个删除的操作,调用一下,先把 testadd() 注释掉
//testadd();
testDeL();
现在里面是存在103的,运行,103就没有了,把整个部分都删除了,这就是删除的操作。
7、要重点理解以下这个思想,这是用的最多的一种思想,基本上都会用到这种思想。
*3、获取到所有的 id
* 使用 xpath //id 返回 list 集合
*4、遍历 list 集合
*5、判断集合里面的 id 和传递的 id 是否相同
*6、如果相同,把 id 所在的 stu 删除