0

0

C#如何操作XML文件 C#使用XmlDocument和LINQ to XML解析XML

月夜之吻

月夜之吻

发布时间:2025-11-13 19:53:03

|

972人浏览过

|

来源于php中文网

原创

答案:C#中操作XML常用XmlDocument和LINQ to XML;XmlDocument基于DOM,适合复杂操作;LINQ to XML语法简洁,支持LINQ查询,推荐新项目使用。

c#如何操作xml文件 c#使用xmldocument和linq to xml解析xml

在C#中操作XML文件是常见的需求,尤其是在处理配置文件、数据交换或Web服务时。.NET 提供了多种方式来读取、修改和创建 XML 文件,其中 XmlDocumentLINQ to XML 是两种最常用的方法。下面分别介绍它们的使用方式和适用场景。

使用 XmlDocument 操作 XML

XmlDocument 是基于 DOM(文档对象模型)的类,它会将整个 XML 文档加载到内存中,形成树形结构,适合对 XML 进行频繁的增删改查操作。

示例:读取并遍历 XML 节点

假设有一个 XML 文件 books.xml


  
    C# 入门经典
    John Doe
  
  
    深入理解 C#
    Jane Smith
  

使用 XmlDocument 加载并读取内容:

XmlDocument doc = new XmlDocument();
doc.Load("books.xml"); // 或 LoadXml(string xml)

XmlNodeList bookNodes = doc.SelectNodes("//Book"); foreach (XmlNode node in bookNodes) { string id = node.Attributes["Id"]?.Value; string title = node["Title"]?.InnerText; string author = node["Author"]?.InnerText;

Console.WriteLine($"ID: {id}, Title: {title}, Author: {author}");

}

修改 XML 示例

添加一个新节点:

XmlElement newBook = doc.CreateElement("Book");
newBook.SetAttribute("Id", "3");

XmlElement titleElem = doc.CreateElement("Title"); titleElem.InnerText = "LINQ 实战"; newBook.AppendChild(titleElem);

XmlElement authorElem = doc.CreateElement("Author"); authorElem.InnerText = "Tom Lee"; newBook.AppendChild(authorElem);

doc.DocumentElement?.AppendChild(newBook); doc.Save("books.xml"); // 保存更改

使用 LINQ to XML 操作 XML

LINQ to XML 是一种更现代、更简洁的方式,它结合了 LINQ 的查询能力,语法更直观,适合函数式编程风格。

示例:加载并查询 XML

Build AI
Build AI

为您的业务构建自己的AI应用程序。不需要任何技术技能。

下载

同样以上面的 books.xml 为例:

XDocument xDoc = XDocument.Load("books.xml");

var books = from book in xDoc.Descendants("Book") select new { Id = book.Attribute("Id")?.Value, Title = book.Element("Title")?.Value, Author = book.Element("Author")?.Value };

foreach (var b in books) { Console.WriteLine($"ID: {b.Id}, Title: {b.Title}, Author: {b.Author}"); }

创建 XML 示例

LINQ to XML 创建 XML 更加简洁:

XDocument newDoc = new XDocument(
    new XElement("Books",
        new XElement("Book", new XAttribute("Id", "1"),
            new XElement("Title", "C# 高级编程"),
            new XElement("Author", "Jeffrey Richter")
        ),
        new XElement("Book", new XAttribute("Id", "2"),
            new XElement("Title", "CLR via C#"),
            new XElement("Author", "Jeffrey Richter")
        )
    )
);

newDoc.Save("new_books.xml");

修改 XML 示例

更新某个节点的内容:

XDocument xDoc = XDocument.Load("books.xml");
var book = xDoc.Descendants("Book")
               .FirstOrDefault(b => b.Attribute("Id")?.Value == "1");
if (book != null)
{
    book.Element("Title")!.Value = "C# 精通之路";
}

xDoc.Save("books.xml");

XmlDocument 与 LINQ to XML 对比

  • XmlDocument:适合复杂操作、需要完整 DOM 树、兼容老项目;语法略显繁琐。
  • LINQ to XML:语法简洁、支持 LINQ 查询、创建和修改更直观;推荐用于新项目。

如果只是简单读取或生成 XML,优先选择 LINQ to XML。如果需要精确控制节点类型、命名空间或进行复杂的节点操作,XmlDocument 依然可靠。

基本上就这些。根据项目需求选择合适的方式,都能高效地完成 XML 操作任务。

相关专题

更多
pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1851

2024.04.01

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2080

2024.08.01

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

920

2024.11.28

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

2696

2024.08.14

vlookup函数使用大全
vlookup函数使用大全

本专题整合了vlookup函数相关 教程,阅读专题下面的文章了解更多详细内容。

28

2025.12.30

金山文档相关教程
金山文档相关教程

本专题整合了金山文档相关教程,阅读专题下面的文章了解更多详细操作。

29

2025.12.30

PS反选快捷键
PS反选快捷键

本专题整合了ps反选快捷键介绍,阅读下面的文章找到答案。

25

2025.12.30

表格中一行两行的方法
表格中一行两行的方法

本专题整合了表格中一行两行的相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.30

cpu温度过高解决方法大全
cpu温度过高解决方法大全

本专题整合了cpu温度过高相关教程,阅读专题下面的文章了解更多详细内容。

5

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.5万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 18.5万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号