C#详解DOM与流模型:三种读取XML实例

3 下载量 184 浏览量 更新于2024-08-28 收藏 351KB PDF 举报
C# 语言提供了丰富的功能来处理 XML 文件,这种轻量级的、可扩展的标记语言在配置文件、数据交换和结构化文档管理中广泛应用。本文将详细介绍三种常用的 C# 读取 XML 文件的方法: XmlDocument、XmlTextReader 和 LINQ to XML。 1. XmlDocument:这是 .NET Framework 中最直接的 XML 处理方式。首先,创建一个 XmlDocument 对象,然后通过 Load 或 LoadXml 方法加载 XML 文件。例如: ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("Book.xml"); XmlNodeList books = xmlDoc.DocumentElement.SelectNodes("//book"); foreach (XmlNode bookNode in books) { string title = bookNode.SelectSingleNode("title").InnerText; string author = bookNode.SelectSingleNode("author").InnerText; // ...其他属性读取 } ``` `XmlDocument` 支持完整的 DOM 模型,可以修改和更新文档内容,但内存占用较大,不适合处理大文件。 2. XmlTextReader:这是一种基于事件驱动的 XML 解析器,逐行或逐节点读取 XML,更适合处理大型 XML 文件,因为它只在需要时加载数据,减少内存消耗。例如: ```csharp using (XmlTextReader reader = new XmlTextReader("Book.xml")) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "book") { string title = reader["title"]; // ...其他属性读取 } } } ``` `XmlTextReader` 是只读的,且不支持复杂的 XPath 查询,但能够实现流式处理。 3. LINQ to XML:这是 .NET 3.5 引入的一种更现代化的方法,使用查询语法操作 XML,代码简洁且易读。例如: ```csharp XDocument doc = XDocument.Load("Book.xml"); var books = from book in doc.Descendants("book") select new { Title = book.Element("title").Value, Author = book.Element("author").Value, // ...其他属性 }; foreach (var book in books) { Console.WriteLine($"Title: {book.Title}, Author: {book.Author}"); } ``` LINQ to XML 提供了灵活的查询能力,同时保持了内存效率,适合处理大型 XML 数据。 选择哪种方式取决于具体的应用场景和性能需求。DOM 提供全面的编辑功能但占用资源多;XmlTextReader 适用于大数据量和内存敏感的情况;而 LINQ to XML 则结合了查询语言的优雅和性能优势。熟悉并灵活运用这些工具能有效提升 C# 应用程序对 XML 文件的处理能力。