新闻中心
C# 如何获取xml节点的父节点和兄弟节点
答案:在C#中可通过XmlDocument或XDocument获取XML节点的父节点和兄弟节点。使用XmlDocument时,通过ParentNode、PreviousSibling和NextSibling属性获取对应节点,推荐使用PreviousElementSibling和NextElementSibling避免文本节点干扰;使用XDocument(LINQ to XML)时,通过Parent属性获取父节点,ElementsBeforeSelf()和ElementsAfterSelf()获取前后兄弟节点,Elements()结合Where筛选所有同级兄弟。前者适用于传统DOM操作,后者语法更简洁,适合现代项目。

在 C# 中操作 XML 时,可以使用 System.Xml 命名空间中的类(如 XmlDocument 或 XDocument)来获取节点的父节点和兄弟节点。下面分别介绍如何使用这两种方式实现。
使用 XmlDocument 获取父节点和兄弟节点
XmlDocument 是传统的 DOM 模型方式,适合对 XML 进行灵活操作。示例 XML:
<Root>
<Parent>
<Child1>内容1</Child1>
<Child2>内容2</Child2>
<Child3>内容3</Child3>
</Parent>
</Root>
假设我们要操作 Child2 节点,获取其父节点和兄弟节点:
代码示例:
Musho
AI网页设计Figma插件
76
查看详情
using System;
using System.Xml;
<p>class Program
{
static void Main()
{
string xml = @"
<Root>
<Parent>
<Child1>内容1</Child1>
<Child2>内容2</Child2>
<Child3>内容3</Child3>
</Parent>
</Root>";</p><pre class="brush:php;toolbar:false;"> XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
// 找到 Child2 节点
XmlNode child2 = doc.SelectSingleNode("//Child2");
// 获取父节点
XmlNode parentNode = child2.ParentNode;
Console.WriteLine("父节点名称: " + parentNode.Name); // 输出: Parent
// 获取前一个兄弟节点
XmlNode prevSibling = child2.PreviousSibling;
if (prevSibling != null)
Console.WriteLine("前一个兄弟节点: " + prevSibling.Name); // Child1
// 获取后一个兄弟节点
XmlNode nextSibling = child2.NextSibling;
if (nextSibling != null)
Console.WriteLine("后一个兄弟节点: " + nextSibling.Name); // Child3
}}
使用 LINQ to XML (XDocument) 获取父节点和兄弟节点
XDocument 是更现代的方式,语法更简洁,推荐用于新项目。代码示例:
using System;
using System.Linq;
using System.Xml.Linq;
<p>class Program
{
static void Main()
{
string xml = @"
<Root>
<Parent>
<Child1>内容1</Child1>
<Child2>内容2</Child2>
<Child3>内容3</Child3>
</Parent>
</Root>";</p><pre class="brush:php;toolbar:false;"> XDocument doc = XDocument.Parse(xml);
// 找到 Child2 元素
XElement child2 = doc.Descendants("Child2").FirstOrDefault();
if (child2 == null) return;
// 获取父节点
XElement parent = child2.Parent;
Console.WriteLine("父节点名称: " + parent.Name); // Parent
// 获取所有同级兄弟元素(不包括自己)
var siblings = parent.Elements().Where(e => e != child2);
Console.WriteLine("所有兄弟节点:");
foreach (var sib in siblings)
Console.WriteLine(" " + sib.Name);
// 获取前一个兄弟
XElement prev = child2.ElementsBeforeSelf().LastOrDefault();
if (prev != null)
Console.WriteLine("前一个兄弟: " + prev.Name); // Child1
// 获取后一个兄弟
XElement next = child2.ElementsAfterSelf().FirstOrDefault();
if (next != null)
Console.WriteLine("后一个兄弟: " + next.Name); // Child3
}}
注意事项
在处理兄弟节点时需注意:- 文本节点或换行符可能被解析为
XmlNode的一部分,导致PreviousSibling或NextSibling返回空白文本节点。建议使用PreviousElementSibling和NextElementSibling(仅限元素)或在 LINQ to XML 中操作Elements()避免干扰。 - 在
XmlDocument中可使用PreviousElementSibling和NextElementSibling直接跳过非元素节点。 -
XDocument更适合函数式查询,而XmlDocument更适合复杂修改或兼容老系统。
基本上就这些。根据你的项目需求选择合适的方法即可。
以上就是C# 如何获取xml节点的父节点和兄弟节点的详细内容,更多请关注其它相关文章!
# 中文网
# 佛山关键词排名外包
# 在线网站推广赚钱是真的吗
# 汽车装潢有哪些网站推广
# 烟草礼盒营销推广的教学视频
# 自贡seo营销公司排名
# 医疗网站优化方案
# 桂林实用的seo策略
# 企业建站seo优化服务
# 如何优化企业新网站排名
# 黄山企业网站推广有哪些
# 解决问题
# c#
# 相关文章
# 适用于
# 推荐使用
# 分片
# 客户端
# 重试
# 更适合
# 多线程
# ai
# node
# xml节点
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
sublime怎么进行远程开发编辑_配置rsub/rmate实现sublime编辑服务器文件
小红书网页版入口链接分享 小红书官网直接进
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法
HTML长属性值处理:表单action路径优化与代码规范应对
qq游戏免费畅玩入口_qq游戏电脑版快速启动
C#使用XPath查询节点时出错? 常见语法错误与调试技巧
J*a实现学校排课程序_面向对象结构化项目示例
俄罗斯搜索引擎Yandex指南 附2025年免登录官网入口
NRF24L01数据传输深度解析:解决大载荷接收异常与分包策略
Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】
苹果手机指南针不准怎么校准 传感器校准方法详解【建议收藏】
AO3访问入口汇总 AO3网页版同人作品一键直达
yandex入口引擎手机版 yandex安卓版下载入口
漫蛙网页登录入口 漫蛙漫画官方授权网址
J*a中实现Go语言select通道多路复用机制
C++的std::forward_list怎么用_C++ STL中单向链表容器的特点与应用
C++如何检测键盘输入_C++ _kbhit与_getch函数非阻塞输入
163邮箱登录密码 163邮箱忘记密码找回
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
批改网学生版PC登录 批改网官网登录系统入口
LINUX的perf命令入门_LINUX官方性能分析工具的使用与解读
C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程
蛙漫画网页版全站入口 蛙漫热门作品免费浏览
优酷会员付费后没到账怎么办_优酷会员充值异常及解决方法
将HTML动态表格多行数据保存到Google Sheet的教程
小红书商家版怎样在笔记嵌入商品卡路径_小红书商家版在笔记嵌入商品卡路径【挂载教程】
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
正确连接J*aScript到HTML实现可点击图片与自定义事件处理
ArrayList与LinkedList操作复杂度详解:遍历与修改
印象笔记如何设离线包出差查阅_印象笔记设离线包出差查阅【离线阅读】
J*aScript map 迭代中检测空数组元素的有效方法
UE5.7引擎表现爆炸优化无敌!5090跑4K稳定60FPS
零跑汽车11月交付量达70327台 实现连续9个月正增长
qq游戏手机版下载安装_qq游戏移动端入口
Pygame教程:解决用户输入与游戏状态更新不同步问题
如何在Promise链中优雅地中断后续then执行
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
在J*a中如何使用Stream.map转换元素_Stream映射操作解析
Python:递归比较文件夹内容并找出特定类型文件的差异
Lar*el如何正确地在控制器和模型之间分配逻辑_Lar*el代码职责分离与架构建议
韩小圈电脑版在线入口_网页版免费登录地址
在Pyomo中实现基于变量的条件约束:Big-M方法详解
支付宝解绑银行卡步骤_支付宝如何解除绑定银行卡
抖音从哪里进入网页版_抖音官方入口链接
React列表渲染与独立状态管理:避免全局状态影响局部更新
steam官方网页快速访问 steam账号注册全流程
Python字典中优雅地迭代剩余元素的方法
iwriter统一登录平台 iwrite账号密码登录页面
Lar*el Excel导入时生成自定义递增ID的策略与实践
优化Django表单:提交验证失败后保留用户输入


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