【发布时间】:2019-11-01 17:54:24
【问题描述】:
我有一个XmlNodeList,我想从中创建两个XmlNodeList。我将检查列表中每个项目内的一些标签,基于该标签的存在,我将把它们添加到我定义的列表之一中。
我试图添加列表,但我没有任何方法将特定项目添加到新的 XmlNodeList 中,该 XmlNodeList 在开始时为空。请帮忙。我在这里缺少什么。
我试过List<XmlNode>,它抛出错误System.ArgumentNullException: 'Value cannot be null。参数名称:source'
class Program
{
static void Main(string[] args)
{
//Import XMl
// XmlNode list as name NEW
foreach(XmlNode emp in NEW)
{
if (emp != null)
{
AddNewList(emp);
}
}
}
public static void AddNewList(XmlNode emp)
{
//Checking for some tag
if(tag!=null)
{
// It is throwing error
currentList.Append(emp);
}
}
public XmlNodeList currentList = null;
public XmlNodeList previousList = null;
}
}
【问题讨论】:
-
您必须从一些
XmlDocument创建XmlNode,然后将其添加到XmlDocumentDOM 层次结构中。XmlNodeList只是来自文档的一组过滤节点,要添加到列表中,您必须以使其包含在过滤器中的方式添加到文档中。这是切换到 LINQ to XML 和XElement可能更容易的原因之一。请参阅:How to create an XML document using XmlDocument?。 -
你期望最后会发生什么? XmlNodeList 是运行选择查询的结果,一般情况下不可能将节点添加到选择中......
-
@dbc 我不想将 XmlNodes 添加到现有 Xml,我只是在给定条件下添加不同 XmlNodeList 中的项目
-
@AlexeiLevenkov 最后我想要新的每个项目,它应该在 currentList 或 previousList 中
-
XmlNodeList无法做到这一点,它是XmlDocument的过滤视图。从docs:对创建 XmlNodeList 集合的节点对象的子对象的更改会立即反映在 XmlNodeList 属性和方法返回的节点中。 XmlNodeList 支持迭代和索引访问。 最好切换到 LINQ to XML 和XElement。
标签: c# xml xmlnode xmlnodelist