Sam*_*abu 23 powershell powershell-2.0 xml-parsing
我有一个XML文件列表,我必须从中获取特定行后的字符串.
在文件中,我需要查找标记Event并获取属性值DLLRoutine.例如标签看起来像下面的......
<Event Definition="Validate" DLLPath="" DLLName="Helper.dll" DLLClass="HelpMain"
DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures"
InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>
Run Code Online (Sandbox Code Playgroud)
我只需要获得Dllroutine价值.如何使用PowerShell做到这一点?
rav*_*nth 34
假设您的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>
'
#Or get it from a XML file
$xml = [xml](Get-Content $XMLPath)
$xml.Events.Event | Select DLLName
Run Code Online (Sandbox Code Playgroud)
Whi*_*ght 16
假设你的Event元素有一个Events元素根:
$xml.Events.Event.DLLName
Run Code Online (Sandbox Code Playgroud)
我只在Powershell 3中测试了这个
wal*_*2mi 15
你也可以使用xpath而不是点符号:
$xml.SelectNodes('//Events/Event') | select DLLName
Run Code Online (Sandbox Code Playgroud)
你可以使用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"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
74133 次 |
| 最近记录: |