C# XmlDocument遍历XML获取元素属性与子节点值示例

4 下载量 138 浏览量 更新于2024-09-01 收藏 54KB PDF 举报
在C#编程中,处理XML数据是一种常见的需求,尤其是在与Web服务交互或者数据持久化时。本文将详细介绍如何使用C#的XmlDocument类来读取名为"school.xml"的XML文件,该文件包含了启明培训学校的学生成绩信息,包括年级、班级、教师和学生等元素。以下是实现这一功能的步骤和关键代码段: 首先,创建一个XmlDocument对象并加载XML文件: ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("school.xml"); ``` 加载完成后,我们可以使用`XmlNodeList`来获取XML文档中的所有元素。在本例中,我们关注的是`<student>`元素,因此可以这样获取: ```csharp XmlNodeList studentNodes = xmlDoc.GetElementsByTagName("student"); ``` 接下来,遍历`studentNodes`,对于每个学生节点,我们可以获取其属性(如`<studentid>`)和子节点(如`<name>`和`<sex>`)的值: ```csharp foreach (XmlNode node in studentNodes) { // 获取学生ID string studentId = node.Attributes["studentid"].Value; // 获取学生姓名 XmlNode nameNode = node.SelectSingleNode("name"); string name = nameNode.InnerText; // 获取学生性别 XmlNode sexNode = node.SelectSingleNode("sex"); string sex = sexNode.InnerText; // 打印学生信息 Console.WriteLine($"学生ID: {studentId}, 姓名: {name}, 性别: {sex}"); } ``` 对于每个`<class>`和`<grade>`元素,也可以采用类似的方法获取其对应的属性和子节点。如果要获取属性,可以直接通过`Attributes`集合;如果要获取文本内容,可以使用`InnerText`或`SelectSingleNode`配合`InnerText`来获取。 此外,如果XML文件中包含嵌套的属性,如`<teacher teach="语文">`,可以使用XPath表达式`node.SelectSingleNode("//teacher[@teach='语文']/teacherName")`来获取特定属性的值。 总结来说,C#中的XmlDocument类提供了丰富的API来解析XML数据,通过遍历节点、获取属性和子节点,我们可以轻松地提取出XML文件中的各种信息。这个例子展示了如何通过C#代码读取并操作XML文件中的元素和属性值,这对于处理XML数据格式的数据源非常实用。