Comment récupérer une valeur d'attribut de xml en utilisant powershell?
j'ai une liste de fichiers XML, à partir desquels je dois récupérer la chaîne après une ligne particulière.
 dans les fichiers, je dois chercher une balise Event et obtenir la valeur de l'attribut DLLRoutine.
par exemple, l'étiquette ressemblerait à quelque chose comme ci-dessous ...
<Event Definition="Validate" DLLPath="" DLLName="Helper.dll" DLLClass="HelpMain" 
       DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures" 
       InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>
j'ai juste besoin d' Dllroutine valeurs. Comment faire avec PowerShell?
5 réponses
en supposant que votre structure XML est quelque chose de similaire à:
$xml = [xml]'
<Events>
<Event Definition="Validate" DLLPath="" DLLName="Helper.dll" DLLClass="HelpMain" DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures" InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>
<Event Definition="Validate1" DLLPath="" DLLName="Helper.dll1" DLLClass="HelpMain1" DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures" InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>
</Events>
'
#Or get it from a XML file
$xml = [xml](Get-Content $XMLPath)
$xml.Events.Event | Select DLLName
en Supposant que votre Event l'élément a un Events élément racine:
$xml.Events.Event.DLLName
Je l'ai seulement testé dans Powershell 3
Vous pouvez utiliser aussi xpath au lieu de la notation par points:
$xml.SelectNodes('//Events/Event') | select DLLName
$xml.Events.Event.DLLName
il fonctionnera dans la version 2, j'ai essayé d'utiliser xpath dans plusieurs scripts et il échoue à chaque fois donc jusqu'à ce que j'ai essayé la notation de point, je pensais que je le faisais mal.
Pourquoi pas Select-XML?
$xml = [xml]'
<Events>
<Event Definition="Validate" DLLPath="" DLLName="Helper.dll" DLLClass="HelpMain" DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures" InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>
<Event Definition="Validate1" DLLPath="" DLLName="Helper.dll1" DLLClass="HelpMain1" DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures" InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>
</Events>
'
Select-XML -xml $xml -xpath "//Event/@DllName"