gpt4 book ai didi

xml - Powershell选择XML节点,其中属性包含在数组中

转载 作者:行者123 更新时间:2023-12-03 16:40:38 31 4
gpt4 key购买 nike

说我有这样的结构:

[xml]$i = "
<root>
<item>
<id>1</id>
<data>Content_Of_1</data>
</item>
<item>
<id>2</id>
<data>Content_Of_2</data>
<item>
<id>5</id>
<data>Content_Of_5</data>
</item>
</item>
</root>
"

$foo = @(1,2,3)

我想选择$ i.root.item.data,其中$ i.root.item.id在$ foo中。

要选择与数组中的ID匹配的节点,我可以执行以下操作:
($i.root.item | ? {$foo -contains $_.id})

但是由于某种原因,如果我尝试获取$ _。data,我什么也没得到:
($i.root.item | ? {$foo -contains $_.id}).data

为什么?

最佳答案

But for some reason if I try to get at $_.data, I get nothing:


($i.root.item | ? {$foo -contains $_.id}).data

一无所获的原因是您正在尝试访问整个 集合上不存在的属性(数据)。您需要执行以下操作:
$i.root.item | ? {$foo -contains $_.id} | ForEach-Object { $_.data }

它访问每个对象 上的data属性。
您还可以在data属性中为每个对象选择值:
$i.root.item | ? {$foo -contains $_.id} | Select-Object data

它将产生一个PSCustomObjects数组,其中每个对象将包含一个名为data的单个属性(与ForEach-Object示例中的字符串数组相反)。

请注意,在Powershell 3.0中,通过新的属性枚举功能,您的原始语法将产生所需的结果,因为枚举将自动完成。

关于xml - Powershell选择XML节点,其中属性包含在数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13051751/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com