项目用于展示XML文件的基本概念、语法规范及其在数据存储与传输中的重要性,并通过实例演示了使用C#读取XML文件的步骤和方法,包括文档加载、节点遍历、数据封装及利用XmlTextReader进行高效查询的技术要点。

项目源码 :下载
- 第二节:SL文件操作概述
- XML(可扩展标记语言)是一种重要的数据传输标准,广泛应用于网络传输、程序配置文件以及跨系统数据交互。
- 不同于HTML用于显示数据,XML主要用于存储和传递数据。
- 在Java、安卓开发中尤为常见,在C#中虽手动操作较少,但内部机制常使用。

- XML的基本语法要求
- 标准XML文档必须包含声明行:`<?xml version="1.0" encoding="utf-8"?>`,不可更改。
- 必须有且仅有一个根元素(根节点)。
- 所有标签必须成对出现,区分大小写,嵌套关系需清晰规范。
- 属性值必须用引号包围,同一元素内属性不能重复。

- XML的应用场景示例
- Web Service可通过XML发布数据接口,如火车站列车时刻表服务。
- 客户端可远程调用该服务获取实时更新的数据,无需自行维护数据库。
- 类似应用还包括天气预报等公共信息服务,体现XML作为跨平台数据交换标准的作用。
- 项目中的配置信息(如数据库连接字符串)也常以XML格式存储。

- 创建和编写XML文件
- 在开发环境中可通过右键添加新项选择"XML文件"来创建。
- 文件需定义一个根节点,例如 `<students>`。
- 可在根节点下添加多个子节点,如 `<student>`,并支持并列结构与属性扩展。

- 读取XML文件的四个基本步骤
- 创建文档对象 [12:34](#?seek_t=754)
- 需引入 `System.Xml` 命名空间。
- 使用 `XmlDocument` 类创建实例。
- 加载XML文档 [12:37](#?seek_t=757)
- 调用 `Load()` 方法加载指定路径的XML文件。
- 若使用相对路径,则默认从应用程序启动目录查找。
- `Load()` 方法将整个XML结构解析为内存中的对象树。
- 获取根节点 [13:48](#?seek_t=828)
- 通过 `DocumentElement` 属性获取根节点对象。
- 遍历节点并封装数据 [14:14](#?seek_t=854)
- 使用 `foreach` 循环遍历根节点的所有子节点。
- 判断节点名称是否为目标节点(如 `"student"`)。
- 对符合条件的节点,进一步遍历其子节点(如 name, age, gender, class)。
- 使用 `switch` 结构根据子节点名提取 `InnerText` 值,并赋给对应属性。
- 每次完整读取一个 `<student>` 节点后,将其封装为对象并加入集合(如 `List<Student>`)。

- 创建文档对象 [12:34](#?seek_t=754)
- 绑定数据显示到DataView
- 将封装好的对象集合设置为 DataView 的 `DataSource`。
- 注意:DataView 的列属性 `DataPropertyName` 必须与对象的公共属性名完全一致(如 `Name`, `Age`, `Gender`, `ClassName`),否则无法正确显示。
- XML操作中的关键属性与方法
- `XmlDocument`: 主要用于加载和操作XML文档。
- `DocumentElement`: 获取根节点。
- `ChildNodes`: 获取当前节点的所有直接子节点集合。
- `InnerText`: 获取或设置节点内的文本内容。
- `Name`: 获取节点的标签名称。
- `ChildNodes.Count`: 获取子节点数量。
- 使用XmlTextReader进行高效节点查找
- 当需要快速定位特定节点或属性时,可使用 `XmlTextReader`。
- 构造时传入XML文件路径。
- 使用 `while(reader.Read())` 循环逐节点读取。
- 不需关心嵌套层级,自动推进至下一个节点。
- 可通过 `GetAttribute(" attributeName ")` 方法直接获取指定属性值(如版本号、发布时间等)。
- 适用于"大海捞针"式查找,比全树遍历更高效。

- 学习建议与课程总结
- XML是重要但非初学者核心重点的内容,当前阶段应掌握基本读取流程即可。
- 复杂查询可在后续学习LINQ to XML或XPath时深入。
- 学习应循序渐进,不必强求一次性精通所有细节。
- 掌握核心技术和学习方法比死磕难点更重要。
- 鼓励学员保持适当压力与合理节奏,未来回看会更容易理解。