我有一个带有这样的节点的xml文件:
<n n="GUID" t="folder">
<a n="path" v="/abc/QWERTY/ghi" />
<n n="GUID" t="folder">
<a n="path" v="/abc/def/ghi" />
我需要从第一个节点获取GUID。
我通过以下脚本得到它:
$Files_xml = [System.Xml.XmlDocument](Get-Content "C:\Files.xml")
[System.Collections.ArrayList] $Files_links = @()
select-xml -xpath "//n[@t='folder']" -xml $Files_xml | foreach {$Files_links += $_.Node.Attributes.GetNamedItem('n').Value}
现在我需要获取GUID,但前提是在路径节点中没有“ QWERTY”
这一定很容易,但是我不知道如何更改选择
答案 0 :(得分:0)
您可以使用?,它是 Where-Object 的别名。
[xml]$Files_xml = @"
<xml>
<n n="GUID123" t="folder">
<a n="path" v="/abc/QWERTY/ghi" />
</n>
<n n="GUID321" t="folder">
<a n="path" v="/abc/def/ghi" />
</n>
</xml>
"@
$Files_links = new-object System.Collections.ArrayList
select-xml -xpath "//n[@t='folder']" -xml $Files_xml | Where-object{$_.Node.ChildNodes.v -notlike "*/QWERTY/*"} | foreach {$Files_links.Add($_.Node.Attributes.GetNamedItem('n').Value) | out-null}
$Files_links