我有一個類似于以下的 XML,需要獲取等于“04”的<Document>節點。<ZZXMLT>
<DataArea>
<Document>
<ZZPRTF>PMS241PF</ZZPRTF>
<ZZXMLT Label="Variant">03</ZZXMLT>
</Document>
<Document>
<ZZPRTF>PMS241PF</ZZPRTF>
<ZZXMLT Label="Variant">04</ZZXMLT>
</Document>
<Document>
<ZZPRTF>PMS242PF</ZZPRTF>
<ZZXMLT Label="Variant">04</ZZXMLT>
</Document>
</DataArea>
以下是powershell代碼。
$xml = [xml](Get-Content -Path $file.FullName | Out-String)
$product = $xml.SelectSingleNode("//Document")
$parent = $product.ParentNode
$allproducts = @($parent.SelectNodes("Document") | Where-Object {$_.ZZXMLT -eq "04"})
<ZZXMLT>當沒有屬性但對于原始 XML 有屬性時,這可以正常作業。
有人可以幫我完成這件事嗎
謝謝!
uj5u.com熱心網友回復:
您不需要這樣做Where-Object- 您可以使用 XPath 運算式中的文本內容來描述<Document>具有后代節點的節點,并將其傳遞給:<ZZXMLT>04SelectNodes
$allproducts = $xml.SelectNodes("/DataArea/Document[./ZZXMLT[text()='04']]")
uj5u.com熱心網友回復:
使用 PowerShell 的 Xml 點表示法和Where-Objectcmdlet:
$Xml = [xml]@'
<DataArea>
<Document>
<ZZPRTF>PMS241PF</ZZPRTF>
<ZZXMLT Label="Variant">03</ZZXMLT>
</Document>
<Document>
<ZZPRTF>PMS241PF</ZZPRTF>
<ZZXMLT Label="Variant">04</ZZXMLT>
</Document>
<Document>
<ZZPRTF>PMS242PF</ZZPRTF>
<ZZXMLT Label="Variant">04</ZZXMLT>
</Document>
</DataArea>
'@
$Xml.DataArea.Document |Where-Object { $_.ZZXMLT.'#Text' -eq '04' }
ZZPRTF ZZXMLT
------ ------
PMS241PF ZZXMLT
PMS242PF ZZXMLT
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/518213.html
標籤:xml电源外壳
