powershell을 사용하여 xml 구문 분석
파워셸은 처음입니다.다음과 같은 구성 XML이 있습니다.
<xml>
<Section name="BackendStatus">
<BEName BE="crust" Status="1" />
<BEName BE="pizza" Status="1" />
<BEName BE="pie" Status="1" />
<BEName BE="bread" Status="1" />
<BEName BE="Kulcha" Status="1" />
<BEName BE="kulfi" Status="1" />
<BEName BE="cheese" Status="1" />
</Section>
</xml>
각 요소를 구문 분석해야 합니다.BEName
상태를 선택합니다.PowerShell을 사용하여 이 작업을 수행하는 방법은 무엇입니까?
첫 번째 단계는 [xml]에 문자열을 캐스팅하는 powershell의 고유한 기능을 사용하여 xmlDocument에 xml 문자열을 로드하는 것입니다.
$doc = [xml]@'
<xml>
<Section name="BackendStatus">
<BEName BE="crust" Status="1" />
<BEName BE="pizza" Status="1" />
<BEName BE="pie" Status="1" />
<BEName BE="bread" Status="1" />
<BEName BE="Kulcha" Status="1" />
<BEName BE="kulfi" Status="1" />
<BEName BE="cheese" Status="1" />
</Section>
</xml>
'@
Powershell을 사용하면 점 표기법으로 xml을 쉽게 구문 분석할 수 있습니다.이 문은 BEName 요소에 대한 일련의 XmlElements를 생성합니다.
$doc.xml.Section.BEName
그런 다음 이러한 개체를 where-object cmdlet에 연결하여 결과를 필터링할 수 있습니다.?를 어디에 대한 바로 가기로 사용할 수 있습니까?
$doc.xml.Section.BEName | ? { $_.Status -eq 1 }
중괄호 내부의 식은 파이프라인의 각 XmlElement에 대해 평가되며 상태가 1인 식만 반환됩니다.$_ 연산자는 파이프라인의 현재 개체(XmlElement)를 참조합니다.
파이프라인의 모든 개체에 대해 작업을 수행해야 하는 경우 각 개체 cmdlet에 개체를 파이프라인의 모든 개체에 대해 블록을 실행할 수 있습니다. %는 각 개체에 대한 바로 가기입니다.
$doc.xml.Section.BEName | ? { $_.Status -eq 1 } | % { $_.BE + " is delicious" }
파워셸은 이런 일에 아주 능숙합니다.객체의 파이프라인을 조립하고, 파이프라인을 필터링하고, 파이프라인의 각 객체에 대한 작업을 수행하는 것은 정말 쉽습니다.
파일로 시작하려면 다음 작업을 수행할 수 있습니다.
[xml]$cn = Get-Content config.xml
$cn.xml.Section.BEName
[xml]$xmlfile = '<xml> <Section name="BackendStatus"> <BEName BE="crust" Status="1" /> <BEName BE="pizza" Status="1" /> <BEName BE="pie" Status="1" /> <BEName BE="bread" Status="1" /> <BEName BE="Kulcha" Status="1" /> <BEName BE="kulfi" Status="1" /> <BEName BE="cheese" Status="1" /> </Section> </xml>'
foreach ($bename in $xmlfile.xml.Section.BEName) {
if($bename.Status -eq 1){
#Do something
}
}
언급URL : https://stackoverflow.com/questions/18032147/parsing-xml-using-powershell
'programing' 카테고리의 다른 글
Windows 탐색기와 동일하게 파일 이름별로 정렬하는 방법은 무엇입니까? (0) | 2023.09.10 |
---|---|
환경 파일에서 환경 변수 읽기 (0) | 2023.09.05 |
Spring MVC와 Struts MVC의 차이 (0) | 2023.09.05 |
Oracle PL/SQL의 사용자 지정 순서 (0) | 2023.09.05 |
Android 5 롤리팝에서 알림 표시줄 아이콘이 흰색으로 바뀝니다. (0) | 2023.09.05 |