C# 如何使用C从XML节点列表中删除节点#

C# 如何使用C从XML节点列表中删除节点#,c#,xmlnode,xmlnodelist,C#,Xmlnode,Xmlnodelist,我有一个XmlNodeList XNL子参数 XmlDocument xDoc = new XmlDocument(); xDoc.Load(somexml); XmlNode xnParamList = xDoc.SelectSingleNode("//tag"); XmlNodeList xnlSubParam = xnParamList.SelectNodes("subpar

我有一个XmlNodeList XNL子参数

              XmlDocument xDoc = new XmlDocument();
              xDoc.Load(somexml);
              XmlNode xnParamList = xDoc.SelectSingleNode("//tag");
              XmlNodeList   xnlSubParam = xnParamList.SelectNodes("subparam");
现在,xnlSubParam将包含一个节点列表

如何获取节点属性以及如何从列表中删除节点。我只是不想删除子参数列表。。从XNL子参数如何做到这一点? 在我的xml中有一个名为Inside的元素

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


我不知道有什么方法可以改变
XmlNodeList
本身。我建议您将节点复制到
列表中
,然后您可以按照正常方式按照自己的意愿进行变异:

List<XmlNode> nodes = xnlSubParam.Cast<XmlNode>().ToList();
// Now work with nodes
当然,这只适用于.NET3.5及更高版本(除非您使用的是LINQBridge或类似的工具)

请注意,就我个人而言,我始终使用LINQ到XML:

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

您是否也要从文档中删除它,或者只是从列表中删除它?您可以使用LINQ转换为XML吗?(我通常觉得它比旧的DOM API更好。)我不想从文档中删除它,我只想从XmlNodelist xnlSubParamcheckout这个链接中删除它。。我发现它在谷歌搜索中使用LinqToXML删除了一个节点-不,先生,它不工作。。。他们为我不需要的XmlDocument提供了帮助。你能用更大的形式发布那张图片吗。。?你需要有非凡的洞察力才能看到,你正在使用的XML在哪里?不,它不起作用,这表明问题就在附近。Cast Becast没有出现在Xmnode中。@user1903774:这是一种扩展方法-你需要为
System.Linq
使用
指令。我假设您使用的是.NET3.5或更高版本,请注意-您是吗?@user1903774:Well
System.Xml.Linq
System.Linq
不同。。。您需要为
System.Linq
使用指令。但是,如果您同时使用LINQ to XML,那么您为什么要使用旧的DOM API还不清楚…@user1903774:请编辑您的问题(而不是在我的答案中添加无关的注释),显示您的XML(而不是截图),并明确指出您正试图实现的目标。我恐怕在这一点上放弃了。我已经解释了如何将节点列表复制到
列表
,然后根据需要进行变异。现在还不清楚为什么不能直接使用我的答案-因为我解释过你需要一个
System.Linq
的使用指令,所以你没有给出更多关于为什么我的答案不适合你的信息。
var doc = XDocument.Load(somexml);
var nodes = doc.Descendants("tag")
               .First()
               .Elements("subparam")
               .ToList();