学生管理系统实现-删除操作| 学习笔记

简介: 快速学习学生管理系统实现-删除操作。

开发者学堂课程【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 删除

相关文章
|
存储 NoSQL 数据库
数据模型
一、数据模型 数据模型是用于描述现实世界中各种实体、属性和实体之间关系的一种抽象表示方法。它是在计算机系统中对数据进行组织和管理的基础,用于定义数据的结构、约束和操作。 数据模型可以分为以下几种类型: 1. 层次模型:层次模型是一种树状结构的数据模型,其中数据以层次结构进行组织。每个节点可以有多个子节点,但只能有一个父节点。典型的层次模型是树形数据库。 2. 网状模型:网状模型是一种复杂的数据模型,其中数据之间可以有多对多的关系。网状模型使用指针来表示数据之间的关系,典型的网状模型是CODASYL数据库。 3. 关系模型:关系模型是一种基于关系代数的数据模型,其中数据以表的形式进行组织。关系模
732 0
|
5月前
|
存储 监控 搜索推荐
小红书笔记视频详情接口解析与实战指南
小红书笔记视频详情接口(smallredbook.item_get_video)提供视频元数据、内容解析、用户画像及电商赋能能力,支持商品监控、推荐优化等场景。合规调用可提升内容营销效果。
|
10月前
|
移动开发 前端开发 API
鸿蒙H5离线包技术分享
鸿蒙H5离线包技术分享:本文基于鸿蒙NEXT Api 12,介绍H5离线包的下载、解压和加载三大核心问题。下载部分支持进度回调与重复下载;解压使用minizip实现并提供进度反馈;加载本地H5页面时处理本地资源与网页跳转,确保无网环境下H5页面正常显示。
335 0
|
负载均衡 算法 应用服务中间件
解密Nginx负载均衡:实现流量分发与故障转移
解密Nginx负载均衡:实现流量分发与故障转移
901 1
C/C++ 关于double和float两种类型的区别
C/C++ 关于double和float两种类型的区别
1099 0
C/C++ 关于double和float两种类型的区别
|
域名解析 编解码 负载均衡
【域名解析DNS专栏】域名解析中的EDNS扩展:提升DNS协议灵活性
【5月更文挑战第27天】EDNS(Extension Mechanisms for DNS)是为了解决传统DNS协议在复杂网络环境下的灵活性和扩展性问题而诞生的技术。它允许在DNS请求和响应中添加额外选项,提高查询效率,支持更大数据范围,增强安全性,并实现负载均衡和故障转移。通过在DNS消息中包含EDNS部分,客户端和服务器能交换更多信息,实现更复杂的逻辑。EDNS的使用示例代码展示了如何在Python中创建和处理EDNS选项。随着技术进步,EDNS将在域名解析领域扮演更重要角色。
674 1
|
存储 安全 数据安全/隐私保护
配置本地安全策略(一)
配置本地安全策略(一)
549 0
|
SQL 资源调度 关系型数据库
实时计算 Flink版产品使用合集之是否可以用jdk17版本使FlinkCDC
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
454 0
|
Shell 开发工具 Android开发
详解sh ndk-build.cmd command not found
【4月更文挑战第2天】
310 1
|
异构计算 SoC
最详细手把手教你安装 Vivado2018.3
最详细手把手教你安装 Vivado2018.3
2069 0