C#读取XML文件的三种方法详解

3 下载量 46 浏览量 更新于2024-09-03 收藏 349KB PDF 举报
"这篇文章主要讲解了C#编程中如何读取XML文件的实例代码,包括使用XmlDocument、XmlTextReader和LinqToXml三种方法。文章指出XML文件在多个领域广泛应用,如配置文件等,是一种结构化数据存储方式。文中还提到了DOM和流模型两种解析XML的模型,DOM适合编辑和查询,但需加载整个文档,而流模型适用于大文件,只读且向前。" 在C#中,读取XML文件是常见的任务,这里将详细介绍三种常用方法: 1. 使用XmlDocument: XmlDocument类提供了完整的XML文档对象模型,允许你创建、修改和遍历XML文档。首先,我们需要创建一个XmlDocument对象,然后使用Load方法加载XML文件。例如: ```csharp XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("Book.xml"); // 现在你可以通过XmlNode接口遍历和操作XML文档 ``` 通过XmlNode接口,你可以查找、修改或删除XML元素。例如,找到所有书籍并打印标题: ```csharp XmlNodeList bookNodes = xmlDoc.SelectNodes("//book"); foreach (XmlNode bookNode in bookNodes) { string title = bookNode.SelectSingleNode("title").InnerText; Console.WriteLine(title); } ``` 2. 使用XmlTextReader: 这种方法是基于流的,只读且不可逆。它逐行读取XML文件,不占用大量内存。创建一个XmlTextReader对象,然后使用Read方法遍历XML: ```csharp using (XmlTextReader reader = new XmlTextReader("Book.xml")) { while (reader.Read()) { if (reader.NodeType == XmlNodeType.Element && reader.Name == "book") { string title = reader.GetAttribute("title"); Console.WriteLine(title); } } } ``` 这种方法适用于处理大型XML文件,但无法进行复杂的查询。 3. 使用LinqToXml: LinqToXml是.NET Framework 3.5引入的新特性,它将XML处理与LINQ结合,提供了更简洁的API。首先,引入System.Xml.Linq命名空间: ```csharp XDocument xDoc = XDocument.Load("Book.xml"); // 使用LINQ查询获取书籍标题 var books = from book in xDoc.Descendants("book") select new { Title = book.Element("title").Value }; foreach (var book in books) { Console.WriteLine(book.Title); } ``` LinqToXml简化了XML处理,使得查询和操作XML数据更直观。 以上三种方法各有优劣,选择哪种取决于具体需求。如果你需要编辑XML文档或者执行复杂查询,可以选择XmlDocument;如果处理大型XML文件,推荐使用XmlTextReader;如果追求简洁和高效,LinqToXml是不错的选择。理解这些基本概念和用法,将有助于你在C#项目中更好地处理XML数据。