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

在C#中操作XML文件是常见的需求,尤其是在处理配置文件、数据交换或Web服务时。.NET 提供了多种方式来读取、修改和创建 XML 文件,其中 XmlDocument 和 LINQ to XML 是两种最常用的方法。下面分别介绍它们的使用方式和适用场景。
使用 XmlDocument 操作 XML
XmlDocument 是基于 DOM(文档对象模型)的类,它会将整个 XML 文档加载到内存中,形成树形结构,适合对 XML 进行频繁的增删改查操作。
示例:读取并遍历 XML 节点
假设有一个 XML 文件 books.xml:
<Books>
<Book Id="1">
<Title>C# 入门经典</Title>
<Author>John Doe</Author>
</Book>
<Book Id="2">
<Title>深入理解 C#</Title>
<Author>Jane Smith</Author>
</Book>
</Books>
使用 XmlDocument 加载并读取内容:
XmlDocument doc = new XmlDocument();
doc.Load("books.xml"); // 或 LoadXml(string xml)
<p>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;</p><pre class='brush:php;toolbar:false;'>Console.WriteLine($"ID: {id}, Title: {title}, Author: {author}");}
修改 XML 示例
添加一个新节点:
XmlElement newBook = doc.CreateElement("Book");
newBook.SetAttribute("Id", "3");
<p>XmlElement titleElem = doc.CreateElement("Title");
titleElem.InnerText = "LINQ 实战";
newBook.AppendChild(titleElem);</p><p>XmlElement authorElem = doc.CreateElement("Author");
authorElem.InnerText = "Tom Lee";
newBook.AppendChild(authorElem);</p><p>doc.DocumentElement?.AppendChild(newBook);
doc.S*e("books.xml"); // 保存更改</p>使用 LINQ to XML 操作 XML
LINQ to XML 是一种更现代、更简洁的方式,它结合了 LINQ 的查询能力,语法更直观,适合函数式编程风格。
示例:加载并查询 XML
Perplexity
Perplexity是一个ChatGPT
和谷歌结合的超级工具,可以让你在浏览互联网时提出问题或获得即时摘要
302
查看详情
同样以上面的 books.xml 为例:
XDocument xDoc = XDocument.Load("books.xml");
<p>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
};</p><p>foreach (var b in books)
{
Console.WriteLine($"ID: {b.Id}, Title: {b.Title}, Author: {b.Author}");
}</p>创建 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")
)
)
);
<p>newDoc.S*e("new_books.xml");</p>修改 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# 精通之路";
}
<p>xDoc.S*e("books.xml");</p>XmlDocument 与 LINQ to XML 对比
- XmlDocument:适合复杂操作、需要完整 DOM 树、兼容老项目;语法略显繁琐。
- LINQ to XML:语法简洁、支持 LINQ 查询、创建和修改更直观;推荐用于新项目。
如果只是简单读取或生成 XML,优先选择 LINQ to XML。如果需要精确控制节点类型、命名空间或进行复杂的节点操作,XmlDocument 依然可靠。
基本上就这些。根据项目需求选择合适的方式,都能高效地完成 XML 操作任务。
以上就是C#如何操作XML文件 C#使用XmlDocument和LINQ to XML解析XML的详细内容,更多请关注其它相关文章!
# 是在
# 浴场怎么推广营销方案范文
# 浙江互联网网站建设预算
# 黎平企业网站建设
# seo网站排名高
# 东莞矩阵seo怎么合作
# 松原seo助手如何营销
# 揭阳seo快速排名优化
# 咖啡营销推广策划
# 珲春平台seo优化
# 南通优化网站建设哪家好
# 都能
# 是一种
# node
# 互联网
# 文档
# 是一个
# 身份验证
# 如何使用
# 加载
# .net
# c#
# xml解析
# 配置文件
# app
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
Archive of Our Own官网直达 AO3最新可用地址一览
蛙漫漫画免费阅读入口_蛙漫官方正版无广告纯净版
实现全屏滚动与导航点:专业教程
Yandex搜索引擎官方地址 俄罗斯网络世界的主要入口
微博网页版直接访问 微博网页版账号管理快速入口
Odoo 16:在表单视图中基于当前记录动态修改Tree视图属性
在哪找SublimeJ远程工具_SFTP插件配置教程
Composer如何解决json扩展缺失的错误
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
J*aScriptWebpack优化_J*aScript构建工具实战
必由学官方登录入口 必由学教师学生账号快速访问
实现分段式页面滚动导航:CSS与J*aScript教程
抖音未来赚钱的新趋势 2025年值得关注的变现风口分析
Golang指针如何与map组合使用_Golang map指针组合实践
小米Civi 4录制视频过暗_小米Civi 4亮度优化
《马克思佩恩3》早期版本曝光 UI设计曾多次调整!
Go语言中Map存储的结构体如何调用指针方法:深入解析与实践
解决Bootstrap卡片顶部边距导致背景图下移的问题
C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能
AngularJS $http POST请求数据传递与Go后端接收实践
J*a里如何实现订单支付与库存同步功能_支付库存同步项目开发方法说明
荣耀Play7T运行卡顿解决_荣耀Play7T性能优化
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
mcjs网页版在线存档 mcjs云存档登录入口
Mudbox图层蒙版怎么用_Mudbox图层蒙版数字雕刻应用技巧
抖音极速版最新版本 抖音极速版官方下载地址
word中如何让数字纵向排列_Word数字纵向排列方法
漫蛙2网页版漫画入口 漫蛙漫画在线官方登录
J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南
Python多线程中正确使用sigwait处理SIGALRM信号
Angular中单选按钮的正确使用与常见陷阱解析
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
树莓派传感器触发:通过Twilio API发送WhatsApp消息教程
Win11怎么隐藏桌面图标 Win11一键隐藏所有桌面元素及恢复显示
想当下一个《2077》?《心之眼》Steam评价升至"多半好评"
厨房不锈钢水槽发黑生锈怎么处理_水槽用可乐+锡纸2分钟抛亮如新
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
Lar*el的路由模型绑定怎么用_Lar*el Route Model Binding简化控制器逻辑
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法
谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示
如何修改开机登录密码_Windows账户安全设置超详细教程【必学】
ACG动漫视频网入口 ACG动漫*免费正版观看地址
在J*a中如何捕获IndexOutOfBoundsException_索引越界异常防护方法说明
PHP URL参数传递与500错误调试指南
在J*a中如何在J*a中使用异常机制记录错误日志_异常日志实践经验
Golang如何优化内存分配与垃圾回收_Golang内存管理与GC优化实践
顺丰快递查单号物流信息 顺丰快递小程序查询入口
夸克浏览器网页版最新地址 夸克浏览器官方入口合集


2025-11-13
浏览次数:次
返回列表