C#解析XML获取学生信息与教师详情
48 浏览量
更新于2024-08-30
收藏 57KB PDF 举报
在C#中,读取XML文件中的元素和属性值是常见的任务,特别是在处理配置文件或数据交换时。本文将介绍如何使用C#的System.Xml命名空间中的类来解析给定的"school.xml"文件,该文件包含启明培训学校的年级、班级、教师和学生信息。
首先,我们需要理解XML的基本结构。XML(可扩展标记语言)是一种用于存储和传输数据的轻量级标记语言,它由标签(元素)组成,每个元素都有一个开始标签和结束标签,可以携带属性和子元素。在这个例子中,`<school>`元素是根元素,其属性`name`的值为“启明培训学校”。
C#中读取XML的步骤如下:
1. 引入所需库:
```csharp
using System;
using System.Xml;
```
2. 加载XML文档:
```csharp
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("school.xml");
```
3. 查找特定元素及其属性:
- 要获取学校名称,使用`XmlNode.SelectSingleNode`或`XmlNode.SelectSingleNode("//school/@name")`来定位`name`属性:
```csharp
string schoolName = xmlDoc.SelectSingleNode("//school/@name").InnerText;
```
- 获取某个年级的信息,如一年级,可以先找到`<grade>`元素,再通过其属性找到对应的`<class>`和`<teacher>`元素:
```csharp
XmlNode gradeNode = xmlDoc.SelectSingleNode("//grade[@id='1']");
string gradeName = gradeNode.SelectSingleNode("@name").InnerText;
foreach (XmlNode classNode in gradeNode.SelectNodes("classes/class"))
{
string className = classNode.SelectSingleNode("@name").InnerText;
foreach (XmlNode teacherNode in classNode.SelectNodes("teachers/teacher[@teach]"))
{
string teach = teacherNode.Attributes["teach"].Value;
string teacherName = teacherNode.SelectSingleNode("teacherName").InnerText;
Console.WriteLine($"教师:{teach} - 姓名:{teacherName}");
}
}
```
4. 读取学生信息:
```csharp
foreach (XmlNode studentNode in gradeNode.SelectSingleNode("students/student"))
{
string studentId = studentNode.Attributes["id"].Value;
string studentName = studentNode.SelectSingleNode("name").InnerText;
string sex = studentNode.SelectSingleNode("sex").InnerText;
Console.WriteLine($"学生ID:{studentId} - 姓名:{studentName} - 性别:{sex}");
}
```
5. 结果输出:
遍历整个XML文档后,你可以根据需要将这些信息用于进一步的处理,如数据库操作、显示到界面等。
通过以上代码,你可以有效地读取并提取XML文件中的元素和属性值,C#的`XmlDocument`类提供了丰富的API来支持XML的解析和操作。
2010-08-14 上传
2021-01-01 上传
177 浏览量
2017-10-27 上传
173 浏览量
2020-08-31 上传
2020-08-31 上传
weixin_38684743
- 粉丝: 6
- 资源: 960
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码