LINQ to XML更推荐用于新项目,因其语法简洁、性能好且支持LINQ查询;XmlDocument适合老系统维护,遵循DOM模型,控制精细。两者选择取决于项目需求:现代开发优选LINQ to XML,传统场景可选XmlDocument。
在C#中操作XML文件是开发中常见的需求,比如读取配置、交换数据或生成报告。.NET提供了多种方式处理XML,其中LINQ to XML和XmlDocument是最常用的两种。它们各有特点,适用于不同场景。
LINQ to XML 是 .NET 3.5 引入的轻量级API,基于LINQ语法,使用更直观,代码更简洁。它适合大多数现代开发场景。
常用类:
创建XML文件
使用XElement可以快速构建XML结构:
XElement root = new XElement("Books",
new XElement("Book",
new XAttribute("Id", "1"),
new XElement("Title", "C#入门详解"),
new XElement("Author", "张三")
),
new XElement("Book",
new XAttribute("Id", "2"),
new XElement("Title", "深入理解LINQ"),
new XElement("Author", "李四")
)
);
root.Save("books.xml");
读取XML文件
加载XML后,可使用LINQ查询提取数据:
XElement doc = XElement.Load("books.xml");
var books = from b in doc.Elements("Book")
select new
{
Id = b.Attribute("Id")?.Value,
Title = b.Element("Title")?.Value,
Author = b.Element("Author")?.Value
};
foreach (var book in books)
{
Console.WriteLine($"{book.Id}: {book.Title} by {book.Author}");
}
修改XML
可以直接修改节点内容或属性:
XElement doc = XElement.Load("books.xml");
XElement firstBook = doc.Element("Book");
firstBook.Element("Title").Value = "C#高级编程";
firstBook.SetAttributeValue("Id", "101");
doc.Save("books.xml");
删除节点
XElement doc = XElement.Load("books.xml");
doc.Element("Book")?.Remove();
doc.Save("books.xml");
XmlDocument 是基于W3C DOM标准的老式方法,适合需要兼容旧项目或复杂节点操作的场景。它以树形结构加载整个文档,操作较繁琐但控制精细。
常用对象:
加载并遍历XML
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
XmlNode root = doc.DocumentElement;
foreach (XmlNode node in root.ChildNodes)
{
if (node.Name == "Book")
{
string id = node.Attributes["Id"]?.Value;
string title = node["Title"]?.InnerText;
string author = node["Author"]?.InnerText;
Console.WriteLine($"{id}: {title} by {author}");
}
}
创建新节点
XmlDocument doc = new XmlDocument();
doc.Load("books.xml");
XmlElement newBook = doc.CreateElement("Book");
newBook.SetAttribute("Id", "3");
XmlElement title = doc.CreateElement("Title");
title.InnerText = "ASP.NET Core实战";
newBook.AppendChild(title);
XmlElement author = doc.CreateElement("Author");
author.InnerText = "王五";
newBook.AppendChild(author);
doc.DocumentElement.AppendChild(newBook);
doc.Save("books.xml");
修改和删除节点
// 修改 XmlNode firstBook = doc.DocumentElement.FirstChild; firstBook["Title"].InnerText = "更新后的书名";// 删除 doc.DocumentElement.RemoveChild(firstBook); doc.Save("books.xml");
两者都能完成XML操作,关键看项目需求:
处理XML时注意以下几点:
new XmlWriterSettings { Encoding = Encoding.UTF8 }。基本上就这些。LINQ to XML 简洁高效,XmlDocument 兼容性强,根据项目情况选择即可。掌握两者,应对各种XML场景都不成问题。
# c#
# node
# 编码
# app
# 内存占用
# .net
# 命名空间
# xml
# 对象
# dom
# linq
# 加载
# 文档
# 最常用
# 都不
# 尤其是
# 都能
# 两种
# 遍历
# 适用于
# 成问题
相关文章:
如何快速搭建安全的FTP站点?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
*服务器网站为何频现安全漏洞?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
高端建站三要素:定制模板、企业官网与响应式设计优化
太原网站制作公司有哪些,网约车营运证查询官网?
孙琪峥织梦建站教程如何优化数据库安全?
如何通过宝塔面板实现本地网站访问?
如何在Golang中使用replace替换模块_指定本地或远程路径
建站之星如何修改网站生成路径?
如何通过山东自助建站平台快速注册域名?
佛山网站制作系统,佛山企业变更地址网上办理步骤?
建站之星各版本价格是多少?
如何快速查询域名建站关键信息?
建站之星安装步骤有哪些常见问题?
建站之星伪静态规则如何正确配置?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
子杰智能建站系统|零代码开发与AI生成SEO优化指南
如何通过虚拟主机快速完成网站搭建?
javascript中对象的定义、使用以及对象和原型链操作小结
建站主机是什么?如何选择适合的建站主机?
C#如何使用XPathNavigator高效查询XML
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
如何选购建站域名与空间?自助平台全解析
南阳网站制作公司推荐,小学电子版试卷去哪里找资源好?
建站之星CMS五站合一模板配置与SEO优化指南
相册网站制作软件,图片上的网址怎么复制?
如何通过虚拟主机快速搭建个人网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
定制建站是什么?如何实现个性化需求?
文字头像制作网站推荐软件,醒图能自动配文字吗?
移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
定制建站哪家更专业可靠?推荐榜单揭晓
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
如何生成腾讯云建站专用兑换码?
制作旅游网站html,怎样注册旅游网站?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
如何在景安服务器上快速搭建个人网站?
教程网站设计制作软件,怎么创建自己的一个网站?
,如何利用word制作宣传手册?
如何正确选择百度移动适配建站域名?
如何在万网自助建站中设置域名及备案?
北京网站制作的公司有哪些,北京白云观官方网站?
Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递
网站制作壁纸教程视频,电脑壁纸网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。