Преобразуйте XmlNodeList в XmlNode []

У меня есть внешняя библиотека, которая требует "XmlNode []" вместо XmlNodeList. Существует ли прямой способ сделать это, не выполняя итерации и передавая каждый узел?

Я не хочу делать это:

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

Я делаю это в.NET 2.0, таким образом, мне нужно решение без linq.

10
задан Ed Schwehm 14 October 2010 в 15:45
поделиться

1 ответ

Попробуйте это (VS2008 и целевая платформа == 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;
    }
}

Подсказки отсюда: IEnumerable и IEnumerable (Of T) 2

8
ответ дан 3 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: