【发布时间】:2021-12-13 15:45:59
【问题描述】:
我正在遍历存储在 $docs 中的多个 xml 文件。我想检查某些标签是否没有所需的值并在那里打印相应的 ID。但在某些 xml 文件中,所有标签可能都不存在,我想排除/跳过该标签。 下面是我的代码,它会打印带有错误值的 id,但如果标签不存在,它也会打印 id。
$vals= ('sslop','mlop','rxid')
Foreach ($xd in $docs)
{
$id=$xd.'com.xyz.abc.123'.bill.Id
$Cname=$xd.'com.xyz.abc.123'.Class.Name
$Cno=$xd.'com.xyz.abc.123'.Class.ComName
$Cfloor=$xd.'com.xyz.abc.123'.Class.FloorName
if ($Cname -notin $vals -or $Cno -notin $vals -or $Cfloor -notin $vals) {
echo $id
}
示例 xml 文件 1
<com.xyz.abc.123>
<bill>
<Id>1298</Id>
<reg>33p</reg>
</bill>
<Class>
<Name>rxid</Name>
<Desc>xyz</Desc>
<ComName>rxid</ComName>
</Class>
</com.xyz.abc.123>
我得到的输出是 id 1298,因为 <FloorName> 不存在于 xml 文件中,但它不应该是 <Name> 和 <ComName> 值存在于 $vals 所以我想要它跳过它。
示例 xml 文件 1
<com.xyz.abc.123>
<bill>
<Id>6548</Id>
<reg>33p</reg>
</bill>
<Class>
<Name>ferid</Name>
<Desc>xyz</Desc>
<ComName>rxid</ComName>
</Class>
</com.xyz.abc.123>
我得到的输出是 id 6548,这是正确的,因为 <Name>ferid</Name> 不在 $vals 中。
【问题讨论】:
-
你可以为“tag aint there”添加一个测试吗?
-
Id在.bill.Id,而不是.title.Id。请提供一个准确的示例以供使用 -
@Theo 对不起!我已经改正了
-
@Lee_Dailey 我即兴提出了这个问题,希望现在可以理解。
-
所以.. 如果我明白了,你想要
if ($Cname -in $vals -and $Cno -in $vals -and $Cfloor -in $vals) { echo $id }??
标签: xml powershell