我有一个外部库需要“XmlNode []”而不是XmlNodeList。有没有直接的方法来做到这一点,而无需迭代和转移每个节点?
我不想这样做:
XmlNode[] exportNodes = XmlNode[myNodeList.Count];
int i = 0;
foreach(XmlNode someNode in myNodeList) { exportNodes[i++] = someNode; }
我在.NET 2.0中这样做,所以我需要一个没有linq的解决方案。
答案 0 :(得分:19)
这种直截了当的方式......
var list = new List<XmlNode>(xml.DocumentElement.GetElementsByTagName("nodeName").OfType<XmlNode>());
var itemArray = list.ToArray();
不需要扩展方法等......
答案 1 :(得分:9)
XmlNode[] nodeArray = myXmlNodeList.Cast<XmlNode>().ToArray();
答案 2 :(得分:8)
试试这个(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;
}
}