【问题标题】:How can I add a XmlNode to XmlNode List , if I have XmlNodeList and I want to create two XmlNodeList out of them.?如果我有 XmlNodeList 并且想从中创建两个 XmlNodeList ,如何将 XmlNode 添加到 XmlNode List ?
【发布时间】: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,然后将其添加到XmlDocument DOM 层次结构中。 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


【解决方案1】:

XmlNodeList 中拥有项目的唯一方法是在 XmlNode 上运行选择查询。没有其他方法可以构造XmlNodeList

因此,在两个 XmlNodeList 中“拆分”XmlNodeList 的唯一选择是运行具有相反条件的单独 XPath 查询,将节点选择到单独的列表中。

请注意,XmlNodeList 不是 List<XmlNode>,尽管名称非常相似 - 添加到 List<XmlNode> 确实是可能的。

【讨论】:

  • 我尝试过使用 List,但它抛出错误 System.ArgumentNullException: 'Value cannot be null。参数名称:source'
猜你喜欢
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多