【问题标题】:How to remove a Node from XML Node List using C#如何使用 C# 从 XML 节点列表中删除节点
【发布时间】:2013-01-08 04:36:55
【问题描述】:

我有一个 XmlNodeList xnlSubParam

              XmlDocument xDoc = new XmlDocument();
              xDoc.Load(somexml);
              XmlNode xnParamList = xDoc.SelectSingleNode("//tag");
              XmlNodeList   xnlSubParam = xnParamList.SelectNodes("subparam");

现在 xnlSubParam 将包含一个节点列表

如何获取节点属性以及如何从列表中删除节点。我只是想从 xnlSubparam 中删除子参数列表。如何执行此操作? 在我的 xml 中,我有一个内部命名的元素

              <subparam name="test1" displayname="Test1" type="BOOLEAN"/> 
              <subparam name="test2" displayname="Test2" type="BOOLEAN"/>
              <subparam name="test3" displayname="Test3" type="BOOLEAN"/>

【问题讨论】:

  • 您是否也尝试将其从文档中删除,还是仅从列表中删除?你能用 LINQ to XML 代替吗? (我通常发现它比旧的 DOM API 更好。)
  • 我不想从文档中删除它我只想从 XmlNodelist xnlSubParam 中删除它
  • 签出此链接.. 我发现它在使用 LinqToXML 进行谷歌搜索删除节点 - stackoverflow.com/questions/10378498/…
  • 不,先生,它不工作......他们给了我不需要的 XmlDocument
  • 你能把这张图片放大一下吗?需要有非凡的远见才能看到,您正在使用的 XML 在哪里......?

标签: c# xmlnode xmlnodelist


【解决方案1】:

我不知道有什么方法可以改变XmlNodeList 本身。我建议您将节点复制到 List&lt;XmlNode&gt; 中,然后您可以按照正常方式对其进行变异:

List<XmlNode> nodes = xnlSubParam.Cast<XmlNode>().ToList();
// Now work with nodes

要使用这些 LINQ 方法,您需要一个 using 指令:

using System.Linq;

当然,这只适用于 .NET 3.5 及更高版本(除非您使用的是 LINQBridge 或类似的东西)。

请注意,我个人会在整个过程中使用 LINQ to XML:

var doc = XDocument.Load(somexml);
var nodes = doc.Descendants("tag")
               .First()
               .Elements("subparam")
               .ToList();

【讨论】:

  • 不,它没有工作它在.Cast附近显示问题,因为Xmnode中没有Cast ..
  • @user1903774:这是一种扩展方法 - 您需要为 System.Linq 指定一个 using 指令。我假设您使用的是 .NET 3.5 或更高版本,请注意 - 是吗?
  • @user1903774:嗯,System.Xml.LinqSystem.Linq 不一样……你需要一个 System.Linq 的 using 指令。但是如果您使用 LINQ to XML...,则不清楚为什么要使用旧的 DOM API
  • @user1903774:请编辑您的 question(而不是在我的答案中添加不相关的 cmets)显示您的 XML(不是屏幕截图)并给出一个 clear表明你想要达到的目标。阅读tinyurl.com/so-list
  • 我现在放弃了,我害怕。我已经解释了如何将节点列表复制到List&lt;&gt;,然后您可以根据需要对其进行变异。完全不清楚为什么你不能只使用我的答案 - 因为我解释说你需要 System.Linq 的 using 指令,你没有提供更多信息说明为什么我的答案对你不起作用。
猜你喜欢
  • 1970-01-01
  • 2021-06-14
  • 1970-01-01
  • 1970-01-01
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多