C# 如何从XElement列表中移除不需要的指定XML节点
C# 裁剪XML响应实现方案
直接操作内存中的XElement对象即可,无需来回转字符串解析,实现代码如下:
// 你原有的解析代码 var xml = XElement.Parse(xmlResponse); // 直接定位所有AppResData节点,ToList避免延迟查询导致操作失效 var appResList = xml.Descendants("AppResData").ToList(); foreach (var appRes in appResList) { // 移除当前AppResData下的ApplMsgLst节点,加空判断避免不存在该节点时报错 appRes.Element("ApplMsgLst")?.Remove(); } // 直接拼接所有处理后的节点为最终输出字符串 string finalOutput = string.Concat(appResList);
注意事项
- 你之前操作Remove失效大概率是因为没有对Descendants的查询结果做实体化,LINQ to XML的默认查询是延迟执行的,每次访问都会重新从原节点查数据,调用ToList()可以把查询结果固定下来,操作才会生效
- 你最终要返回的本身就是多个平级的AppResData节点,没有统一根节点,所以直接拼接字符串即可,不需要再转成XElement对象,自然不会出现多根元素的报错
内容的提问来源于stack exchange,提问作者DaveN59
相关产品推荐
相关产品推荐

