本文介绍了将XmlNodeList转换为XmlNode []的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个需要 XmlNode []而不是XmlNodeList的外部库。是否有一种直接的方法可以执行此操作而又无需迭代并转移每个节点?

I have a external library that requires a "XmlNode[]" instead of XmlNodeList. Is there a direct way to do this without iterating over and transferring each node?

我不想这样做:

XmlNode[] exportNodes = XmlNode[myNodeList.Count];
int i = 0;
foreach(XmlNode someNode in myNodeList) { exportNodes[i++] = someNode; }

我在.NET 2.0中正在执行此操作,因此我需要一个没有linq的解决方案。

I am doing this in .NET 2.0 so I need a solution without linq.

推荐答案

尝试一下(VS2008和目标框架== 2​​.0):

Try this (VS2008 and target framework == 2.0):

static void Main(string[] args)
{
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.LoadXml("<a><b /><b /><b /></a>");
    XmlNodeList xmlNodeList = xmldoc.SelectNodes("//b");
    XmlNode[] array = (
        new System.Collections.Generic.List<XmlNode>(
            Shim<XmlNode>(xmlNodeList))).ToArray();
}

public static IEnumerable<T> Shim<T>(System.Collections.IEnumerable enumerable)
{
    foreach (object current in enumerable)
    {
        yield return (T)current;
    }
}

此处的提示:

这篇关于将XmlNodeList转换为XmlNode []的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-16 22:15