C#解析XML获取学生信息与教师详情

1 下载量 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的解析和操作。