11
votes

Convertir xmlnodeliste en xmlnode []

J'ai une bibliothèque externe qui nécessite un "xmlnode []" au lieu de xmlnodeliste. Y a-t-il une façon directe de le faire sans itération et transfert de chaque nœud?

Je ne veux pas faire ceci: xxx

Je fais cela dans .net 2.0 J'ai besoin d'une solution sans linq.


3 commentaires

Y a-t-il des raisons de ne pas itérer sur le xmlnodelist et l'utiliser pour charger le xmlnode [] ? Parce que si vous l'aviez fait cela, vous auriez fini maintenant.


Aucune raison, c'est la mise en œuvre actuelle. Cela me semble étrange que cela ne puisse pas être fait avec plus de sémantique de compilateur.


La sémantique du compilateur pour cela se trouve dans les nouvelles versions de c # /. NET :) Si vous êtes coincé avec une version plus ancienne, alors vous êtes coincé avec ce que vous avez.


3 Réponses :


8
votes

Essayez ceci (vs2008 et cadre cible == 2.0): xxx

indice d'ici: iEnumerable et iEnumerable (de T) 2


1 commentaires

@CATX OP a demandé une solution sans linq et d'autres réponses l'utilisent. La méthode shim est proposée sous forme de méthode d'extension, elle peut donc être réutilisée et placée dans une autre classe avec d'autres méthodes d'extension. Si vous avez des exigences différentes, vous devez poser une nouvelle question.



20
votes

Que diriez-vous de cette voie directe ...

var list = new List<XmlNode>(xml.DocumentElement.GetElementsByTagName("nodeName").OfType<XmlNode>());
var itemArray = list.ToArray();


1 commentaires

detype est une extension LINQ.



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

0 commentaires