C#如何实现XML文件的读写操作?实例用法总结

来源:AI编程作者:澳门程序员头衔:程序员
导读:本期聚焦于小伙伴创作的《C#如何实现XML文件的读写操作?实例用法总结》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《C#如何实现XML文件的读写操作?实例用法总结》有用,将其分享出去将是对创作者最好的鼓励。

在C#开发中,XML作为一种结构化的数据存储格式,常被用于配置文件、数据交换等场景,掌握XML的读写操作是开发者的必备技能。不同的XML操作方式适用于不同的需求,下面逐一介绍常见的实现方案。

C#如何实现XML文件的读写操作?实例用法总结

使用XmlDocument读取XML文件

XmlDocument是传统的XML操作类,基于DOM模型,适合处理中小型XML文件,操作逻辑清晰,容易理解。

读取XML示例

假设我们有如下结构的XML文件,路径为D:test.xml

<?xml version="1.0" encoding="utf-8"?>
<users>
  <user id="1">
    <name>张三</name>
    <age>25</age>
  </user>
  <user id="2">
    <name>李四</name>
    <age>28</age>
  </user>
</users>

读取该XML文件所有用户信息的代码如下:

using System;
using System.Xml;

class Program
{
    static void Main()
    {
        // 创建XmlDocument实例
        XmlDocument xmlDoc = new XmlDocument();
        // 加载XML文件
        xmlDoc.Load(@"D:test.xml");
        // 获取根节点
        XmlNode root = xmlDoc.SelectSingleNode("users");
        // 获取所有user子节点
        XmlNodeList userNodes = root.SelectNodes("user");
        // 遍历输出用户信息
        foreach (XmlNode userNode in userNodes)
        {
            string id = userNode.Attributes["id"].Value;
            string name = userNode.SelectSingleNode("name").InnerText;
            string age = userNode.SelectSingleNode("age").InnerText;
            Console.WriteLine($"用户ID:{id},姓名:{name},年龄:{age}");
        }
    }
}

使用XmlDocument写入XML示例

创建一个新的XML文件并写入用户数据的代码如下:

using System;
using System.Xml;

class Program
{
    static void Main()
    {
        XmlDocument xmlDoc = new XmlDocument();
        // 创建XML声明
        XmlDeclaration declaration = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null);
        xmlDoc.AppendChild(declaration);
        // 创建根节点
        XmlNode root = xmlDoc.CreateElement("users");
        xmlDoc.AppendChild(root);
        // 创建第一个user节点
        XmlNode user1 = xmlDoc.CreateElement("user");
        XmlAttribute idAttr1 = xmlDoc.CreateAttribute("id");
        idAttr1.Value = "1";
        user1.Attributes.Append(idAttr1);
        // 创建name子节点
        XmlNode name1 = xmlDoc.CreateElement("name");
        name1.InnerText = "张三";
        user1.AppendChild(name1);
        // 创建age子节点
        XmlNode age1 = xmlDoc.CreateElement("age");
        age1.InnerText = "25";
        user1.AppendChild(age1);
        root.AppendChild(user1);
        // 保存XML文件
        xmlDoc.Save(@"D:new_test.xml");
        Console.WriteLine("XML文件写入完成");
    }
}

使用Linq to XML读写XML

Linq to XML是.NET Framework 3.5之后推出的更简洁的XML操作方式,代码可读性更强,操作更灵活,是目前推荐的使用方案。

读取XML示例

读取上述D:test.xml文件的代码如下:

using System;
using System.Linq;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        // 加载XML文件
        XDocument xDoc = XDocument.Load(@"D:test.xml");
        // 使用Linq查询所有user节点
        var users = xDoc.Descendants("user")
            .Select(u => new
            {
                Id = u.Attribute("id").Value,
                Name = u.Element("name").Value,
                Age = u.Element("age").Value
            });
        // 输出用户信息
        foreach (var user in users)
        {
            Console.WriteLine($"用户ID:{user.Id},姓名:{user.Name},年龄:{user.Age}");
        }
    }
}

写入XML示例

使用Linq to XML创建并写入XML文件的代码如下:

using System;
using System.Xml.Linq;

class Program
{
    static void Main()
    {
        // 创建XDocument对象
        XDocument xDoc = new XDocument(
            new XDeclaration("1.0", "utf-8", null),
            new XElement("users",
                new XElement("user",
                    new XAttribute("id", "1"),
                    new XElement("name", "张三"),
                    new XElement("age", "25")
                ),
                new XElement("user",
                    new XAttribute("id", "2"),
                    new XElement("name", "李四"),
                    new XElement("age", "28")
                )
            )
        );
        // 保存文件
        xDoc.Save(@"D:linq_test.xml");
        Console.WriteLine("Linq to XML写入完成");
    }
}

使用StreamReader/StreamWriter读写简单XML

如果XML结构非常简单,也可以直接使用StreamReader读取文本内容,或者StreamWriter写入文本,这种方式适合处理格式固定的小型XML文件。

读取示例

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string xmlPath = @"D:test.xml";
        // 使用StreamReader读取全部文本
        using (StreamReader reader = new StreamReader(xmlPath))
        {
            string xmlContent = reader.ReadToEnd();
            Console.WriteLine("XML文件内容:");
            Console.WriteLine(xmlContent);
        }
    }
}

写入示例

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string xmlPath = @"D:stream_test.xml";
        string xmlContent = "<?xml version="1.0" encoding="utf-8"?>n<users>n  <user id="1">n    <name>张三</name>n    <age>25</age>n  </user>n</users>";
        // 使用StreamWriter写入内容
        using (StreamWriter writer = new StreamWriter(xmlPath))
        {
            writer.Write(xmlContent);
        }
        Console.WriteLine("Stream方式写入完成");
    }
}

不同方式的适用场景

可以根据实际需求选择合适的XML操作方式:

  • XmlDocument:适合需要兼容旧版本.NET框架,或者习惯DOM模型操作的场景,处理中小型XML文件效率尚可。
  • Linq to XML:适合.NET Framework 3.5及以上版本的项目,代码简洁,支持Linq查询,处理各种复杂度的XML都很方便,是首选方案。
  • StreamReader/StreamWriter:仅适合XML结构极其简单、不需要解析节点内容的场景,灵活度低,不建议用于复杂XML操作。

注意事项

在操作XML文件时需要注意以下几点:

  • 读取或写入文件时需要确保文件路径正确,且程序有对应的文件读写权限,避免出现IO异常。
  • XML文件编码需要和代码中指定的编码一致,否则可能出现乱码问题,通常推荐使用utf-8编码。
  • 使用XmlDocument或Linq to XML操作XML时,如果节点不存在,直接获取属性或子节点会抛出异常,建议先判断节点是否存在再操作。

C#XML读写XmlDocumentLinq_to_XMLStreamReader修改时间:2026-07-19 11:57:39

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。