我有這樣的 Powershell 代碼:
$Xml = @"
<?xml version="1.0" encoding="utf-8"?>
<DisplayDefinitionTable>
<columns>
<column_entry order_num="0" relation_to_base="Item.current_name">current_name</column_entry>
</columns>
<rows>
<row>
<object_tag tag="91859" uid="TdjJhBMdpQNFhC"/>
<object_tag tag="86504" uid="TtvJBp53pQNFhC"/>
<row_element column="0" component_tag="91859" property_name="current_name">EAUX</row_element>
</row>
<row>
<object_tag tag="92069" uid="DCuJhBMdpQNFhC"/>
<object_tag tag="86504" uid="TtvJBp53pQNFhC"/>
<row_element column="0" component_tag="92069" property_name="current_name">VISS</row_element>
</row>
</rows>
</DisplayDefinitionTable>
"@
Select-Xml -Content $Xml -XPath "//object_tag" | foreach {$_.node.uid}
和結果:
Select-Xml -Content $Xml -XPath "//object_tag" | foreach {$_.node.uid}
TdjJhBMdpQNFhC
TtvJBp53pQNFhC
DCuJhBMdpQNFhC
TtvJBp53pQNFhC
PS C:\Windows\system32>
主要目標是只獲取檔案中每個葉子的第一個 uid 值,因此正確的答案應該如下所示:
TdjJhBMdpQNFhC
DCuJhBMdpQNFhC
PS C:\Windows\system32>
這個怎么做??謝謝
uj5u.com熱心網友回復:
嘗試將您的命令指定為:
Select-Xml -Content $Xml -XPath "//object_tag[1]" | foreach {$_.node.uid}
請注意,將[1]添加到 XPath 以專門提取第一個實體。
或者,您也可以使用如下命令將管道保存到 foreach:
(Select-Xml -Content $Xml -XPath "//object_tag[1]").node.uid
上述兩種變體都能為您提供所需的結果。
此外,這個關于 XPath 的備忘單有一些關于索引等的更多資訊......
uj5u.com熱心網友回復:
使用(加速的)標準 .Net xml 決議器可能更容易,這也將更好地針對特定的row/object_tag uid s,而不是uid其他級別的所有其他可能:
$Xml = [xml]@'
<?xml version="1.0" encoding="utf-8"?>
<DisplayDefinitionTable>
<columns>
<column_entry order_num="0" relation_to_base="Item.current_name">current_name</column_entry>
</columns>
<rows>
<row>
<object_tag tag="91859" uid="TdjJhBMdpQNFhC"/>
<object_tag tag="86504" uid="TtvJBp53pQNFhC"/>
<row_element column="0" component_tag="91859" property_name="current_name">EAUX</row_element>
</row>
<row>
<object_tag tag="92069" uid="DCuJhBMdpQNFhC"/>
<object_tag tag="86504" uid="TtvJBp53pQNFhC"/>
<row_element column="0" component_tag="92069" property_name="current_name">VISS</row_element>
</row>
</rows>
</DisplayDefinitionTable>
'@
和 PowerShell Xml 點表示法語法:
$xml.DisplayDefinitionTable.Rows.Row.ForEach{ $_.object_tag[0].uid }
TdjJhBMdpQNFhC
DCuJhBMdpQNFhC
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/496650.html
