36

XML ファイルのリストがあり、そこから特定の行の後の文字列を取得する必要があります。

ファイルで、タグを探しEventて属性値を取得する必要がありますDLLRoutine。たとえば、タグは次のようになります...

<Event Definition="Validate" DLLPath="" DLLName="Helper.dll" DLLClass="HelpMain" 
       DLLRoutine="pgFeatureInfoOnValidate_WriteToRegSelectedFeatures" 
       InputParameters="pTreeViewFeatureTreeServerOS" RunOnce="no"/>

値を取得するだけDllroutineです。PowerShell を使用してそれを行う方法?

4

5 に答える 5

48

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
于 2012-08-31T10:18:46.773 に答える
18

要素に要素ルートEventがあると仮定します。Events

$xml.Events.Event.DLLName

これはPowershell 3でのみテストしました

于 2013-09-30T14:39:40.007 に答える
17

ドット表記の代わりに xpath も使用できます。

$xml.SelectNodes('//Events/Event') | select DLLName
于 2012-09-01T07:24:04.373 に答える
3

試す$xml.Events.Event.DLLName

バージョン 2 で動作します。いくつかのスクリプトで xpath を使用しようとしましたが、毎回失敗するので、ドット表記を試すまでは間違っていると思っていました。

于 2014-04-18T15:23:47.317 に答える