Je suis certes manquant quelques détails importants ici. Je ne peux tout simplement pas faire fonctionner XPath de .NET avec des fichiers de projet Visual Studio.
chargons un document XML: p> exécute ma requête: p> var nodes = doc.SelectNodes("//*/@Include");
Console.WriteLine(nodes.Count); // found some
3 Réponses :
Regardez l'espace de noms root; Vous devrez inclure un gestionnaire de points XML-NAMPACE et utiliser des requêtes telles que "// x: itemgroup", où "x" est votre alias désigné pour l'espace de noms root. Et transmettre le gestionnaire dans la requête. Par exemple:
Ajouter un espace de noms a fait le tour. Dommage que l'on ne peut pas accepter deux réponses pour une question :-)
@Catbert: Vous pouvez inverser votre réponse actuellement acceptée (ce qui est faux) et accepter la réponse correcte (@ Marc-Gravell). Non seulement vous pouvez, mais vous devrait code> le faire, car sinon certaines personnes penseront que la réponse erronée / acceptée est correcte.
Vous devez probablement ajouter une référence à l'espace de noms J'ai eu un problème similaire, j'ai écrit à ce sujet < Un href = "http://roundedcorners.wordpress.com/2009/12/23/net-xpath-queries-on-xml-with-a-namespace/" rel = "noreferrer"> ici . Faites quelque chose comme ceci: p> http://schemas.microsoft.com/developer/msbuild/2003 code>.
Oui, j'ai raté l'alias dans le XPath
J'ai posté une version LINQ / XML sur:
Mais voici le gist de celui-ci. Cela peut ne pas être 100% parfait ...... mais cela montre l'idée. P>
Je pose le code ici, puisque j'ai trouvé cela (original) lors de la recherche d'une réponse. Ensuite, j'ai marre de chercher et écrit le mien. P>
Pas 100% parfait? Ça me convenait bien mais quels seraient les pièges si ça ne me dérange pas que je demande après 2 ans
Je ne sais pas ce qu'il fait de références de GAC, c'est le seul inconnu, car je fais rarement des références de GAC en dehors du cadre principal. C'est à peu près ça. J'utilise toujours le script quand j'ai besoin d'un "rapport de référence" de pauvres homme ...
Qu'en est-il de
var nœuds = doc.SelectNodes ("// * / itemgroup"); code> Je suis dans Mac OS X maintenant ne peut donc pas vérifier.