0

0

C#怎么删除XML节点 C#移除XML元素教程

煙雲

煙雲

发布时间:2025-12-30 08:24:08

|

629人浏览过

|

来源于php中文网

原创

C#中删除XML节点需先定位再调用Remove()或RemoveAll();XDocument推荐用Descendants()/Elements()查找后Remove(),XmlDocument须用RemoveChild()且倒序遍历多节点。

c#怎么删除xml节点 c#移除xml元素教程

在C#中删除XML节点,关键是先定位目标节点,再调用 Remove()RemoveAll() 方法;注意操作前要确保节点非空,且对 XDocumentXmlDocument 的处理方式略有不同。

使用 XDocument 删除指定元素(推荐 LINQ to XML)

XDocument 是现代、轻量、支持LINQ查询的XML处理方式,适合大多数场景。删除节点前需先查找到它,再调用 Remove()

  • Descendants()Elements() 查找匹配的节点,例如:doc.Descendants("Book").FirstOrDefault(x => (string)x.Attribute("id") == "102")?.Remove();
  • 删除所有同名节点: doc.Root?.Elements("Author").Remove();
  • 删除子节点但保留父节点内容: node.Element("Price")?.Remove();
  • 修改后别忘了保存:doc.Save("books.xml");

使用 XmlDocument 删除节点(传统 DOM 方式)

XmlDocument 需通过 XmlNode 对象操作,删除前必须从父节点调用 RemoveChild(),不能直接在节点上调用 Remove()

Dora
Dora

创建令人惊叹的3D动画网站,无需编写一行代码。

下载
  • 查找并删除第一个匹配节点:var node = doc.SelectSingleNode("//Book[@id='102']"); if (node != null) node.ParentNode.RemoveChild(node);
  • 删除所有符合条件的节点,需倒序遍历(避免索引错乱):var nodes = doc.SelectNodes("//Comment"); for (int i = nodes.Count - 1; i >= 0; i--) nodes[i].ParentNode.RemoveChild(nodes[i]);
  • 清空某元素全部子节点(不删自身):element.RemoveAll();

删除时常见问题与注意事项

实际编码中容易忽略这些细节,导致异常或静默失败:

  • 空引用异常最常见——务必检查 nodeParentNode 是否为 null,建议配合空条件操作符(?. )或 if 判断
  • XDocumentRemove() 是扩展方法,需引入 System.Xml.Linq 命名空间
  • XmlDocumentRemoveChild() 要求传入的节点必须属于当前文档,跨文档移动后需先 ImportNode()
  • 删除后如需重新加载或序列化,注意编码是否一致(如 UTF-8 带 BOM),否则保存可能出乱码

简单示例:删除所有无标题的 Book 元素

XDocument 实现一行逻辑清晰的清理:

XDocument doc = XDocument.Load("library.xml");
doc.Root?.Elements("Book")
  .Where(b => string.IsNullOrWhiteSpace(b.Element("Title")?.Value))
  .ToList()
  .ForEach(b => b.Remove());
doc.Save("library_clean.xml");

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

312

2023.08.02

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

228

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

433

2024.03.01

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

710

2023.08.22

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

192

2023.11.20

php中foreach用法
php中foreach用法

本专题整合了php中foreach用法的相关介绍,阅读专题下面的文章了解更多详细教程。

37

2025.12.04

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

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

30

2025.12.29

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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号