programing

파워셸을 사용하여 xml에서 속성 값을 가져오는 방법은 무엇입니까?

lastcode 2023. 7. 26. 22:08
반응형

파워셸을 사용하여 xml에서 속성 값을 가져오는 방법은 무엇입니까?

XML 파일 목록이 있으므로 특정 행 뒤에 있는 문자열을 가져와야 합니다.

파일에서 태그를 찾아야 합니다.Event속성 값을 가져옵니다.DLLRoutine예를 들어 태그는 아래와 같습니다...

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

나는 단지 그것을 얻기만 하면 됩니다.Dllroutine가치.PowerShell을 사용하는 방법은 무엇입니까?

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

다음과 같이 가정합니다.Event요소가 있습니다.Events요소 루트:

$xml.Events.Event.DLLName

파워셸 3에서만 테스트해봤어요

점 표기법 대신 xpath도 사용할 수 있습니다.

$xml.SelectNodes('//Events/Event') | select DLLName

사용할 수 있습니다.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"

해라$xml.Events.Event.DLLName

버전 2에서 작동할 것입니다. 여러 스크립트에서 xpath를 사용하려고 시도했지만 매번 실패하여 점 표기법을 시도할 때까지 제가 잘못하고 있다고 생각했습니다.

언급URL : https://stackoverflow.com/questions/12212452/how-to-fetch-an-attribute-value-from-xml-using-powershell

반응형