J'essaie d'utiliser select-xml
pour déraciner un certain nombre de choses à partir d'une solution SharePoint. J'ai un répertoire de solution qui contient un certain nombre de fonctionnalités, et plutôt que d'ouvrir chaque feature.xml
et de sélectionner les noms des fonctionnalités à la main et de les mettre dans une liste, j'espérais faire l'équivalent en utilisant powershell
et select-xml
.PowerShell select-xml xpath ne semble pas fonctionner
Ma tentative a quelque chose comme ceci:
ls -recurse -filter feature.xml | select-xml "/Feature"
et je me suis rien, j'ai donc essayé ceci:
ls -recurse -filter feature.xml | select-xml "//*"
qui semblait faire ce qu'il était censé faire. J'ai une liste de tous les nœuds XML dans tous les fichiers feature.xml de ma solution.
J'ai essayé des expressions XPath telles que "// Feature" et "Feature", mais aucune n'a obtenu de résultat.
Il me semble que mes expressions XPath sont correctes, mais le comportement de select-xml est un peu déroutant. Quelqu'un sait pourquoi cela pourrait se produire?
Si votre "feature.xml" suit [ce] (http://msdn.microsoft.com/en- us/library/ms475601.aspx), vous devez utiliser un préfixe lié à l'URI de l'espace de noms 'http: // schemas.microsoft.com/sharepoint /' pour ce test QName. Sinon: '// * [nom-local() = 'Fonction']' –
@Alejandro: la fonction xml a juste un attribut xmlns = "http://schemas.microsoft.com/sharepoint/". Je ne suis pas un expert, mais cela ne définit-il pas l'espace de noms par défaut? Je pensais que si l'espace de noms par défaut était défini, XPath n'aurait pas besoin d'une spécification supplémentaire pour cela. –
Non. C'est une FAQ: un test QName sans préfixe sélectionne un élément sous un URI d'espace de noms vide (ou vide). –