Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XmlNodeList转换为XmlNode[]_C#_Xml_.net 2.0 - Fatal编程技术网

C# 将XmlNodeList转换为XmlNode[]

C# 将XmlNodeList转换为XmlNode[],c#,xml,.net-2.0,C#,Xml,.net 2.0,我有一个外部库,它需要“XmlNode[]”而不是XmlNodeList。有没有一种直接的方法可以做到这一点,而无需迭代和传输每个节点 我不想这样做: XmlNode[] exportNodes = XmlNode[myNodeList.Count]; int i = 0; foreach(XmlNode someNode in myNodeList) { exportNodes[i++] = someNode; } 我在.NET 2.0中这样做,所以我需要一个没有linq的解决方案。试试这个

我有一个外部库,它需要“XmlNode[]”而不是XmlNodeList。有没有一种直接的方法可以做到这一点,而无需迭代和传输每个节点

我不想这样做:

XmlNode[] exportNodes = XmlNode[myNodeList.Count];
int i = 0;
foreach(XmlNode someNode in myNodeList) { exportNodes[i++] = someNode; }
我在.NET 2.0中这样做,所以我需要一个没有linq的解决方案。

试试这个(VS2008和target framework==2.0):

static void Main(字符串[]args)
{
XmlDocument xmldoc=新的XmlDocument();

LoadXml(“

这种直接的方式怎么样

var list = new List<XmlNode>(xml.DocumentElement.GetElementsByTagName("nodeName").OfType<XmlNode>());
var itemArray = list.ToArray();
var list=type()的新列表(xml.DocumentElement.GetElementsByTagName(“nodeName”);
var itemArray=list.ToArray();
不需要扩展方法等。

XmlNode[]noderray=myXmlNodeList.Cast().ToArray();
 XmlNode[] nodeArray = myXmlNodeList.Cast<XmlNode>().ToArray();

是否有理由不迭代
XmlNodeList
并使用它加载
xmlnodel[]
?因为如果你已经这样做了,你现在就已经完成了。没有理由,这是当前的实现。我觉得奇怪的是,不能用更多的编译器语义来完成。这方面的编译器语义在较新版本的C#/.NET中:)如果您使用的是旧版本,那么您就只能使用现有版本。
of type
是一个LINQ扩展。@CaTx OP要求一个没有LINQ的解决方案,其他答案使用它。
Shim
方法是作为扩展方法提供的,因此可以重用它,并将它放在具有其他扩展方法的另一个类中。如果您有不同的租金要求,你应该问一个新问题。
 XmlNode[] nodeArray = myXmlNodeList.Cast<XmlNode>().ToArray();