【发布时间】:2020-04-28 09:21:46
【问题描述】:
我有一个结构如下的 XML 文件:
<document>
<Asset>
<PropertyList Type="DataSource">
<Property Name="one" Value="some_value1" />
<Property Name="two" Value="some_value2" />
<Property Name="three" Value="some_value3" />
</PropertyList>
<PropertyList Type="DecisionMaker">
<Property Name="four" Value="FALSE" />
<Property Name="five" Value="FALSE" />
<Property Name="six" Value="FALSE" />
</PropertyList>
</Asset>
<Asset>
<PropertyList Type="DataSource">
<Property Name="one" Value="some_value6" />
<Property Name="two" Value="some_value7" />
<Property Name="three" Value="some_value8" />
</PropertyList>
<PropertyList Type="DecisionMaker">
<Property Name="four" Value="TRUE" />
<Property Name="five" Value="FALSE" />
<Property Name="six" Value="FALSE" />
</PropertyList>
</Asset>
</document>
实际上,文档包含几十个元素,并且是由另一个系统创建的。 我想构建一个powershell脚本,它将在文档中搜索值为“TRUE”的属性名称“four”,然后输出存在于同一资产中的兄弟元素下的属性名称“Two”的值父母。
我能够搜索名称为“four”且值为“true”的每个属性节点,但我不知道如何从同级元素中获取值:
[XML]$Test = Get-Content ("C:\folder\test.xml")
$Test.SelectNodes("//Property") | % { $_ | ?{ ($_.Name -eq "four" -and $_.Value -eq "TRUE") }} | Select $_.Value
谁能提供任何指导?
【问题讨论】:
-
select-xml 可能有一些不错的 xpath 方式。
标签: xml powershell scripting