私は照会しているXML文書を持っています。下記のサンプルXMLから、USERがパスワードを持ち、STATUS = "a"かつACTION = "h"のときは$Match = TRUE
です。これらはすべて同じXML内にあります。同じXMLで複数のXML属性を照会する
<BusinessUnitList>
<User id="1407210" loginName="1407210" password="Password1" statusCode="a">
<WorkStatusList>
<WorkStatus start="2016-10-13" status="a" action="h" />
私は1つのまたは他の属性を照会することができます
$Match = (gc "c:\file.xml | Select-Xml -XPATH "//User" | select -ExpandProperty node | where {$_.password})
$Match2 = (gc "c:\file.xml | Select-Xml -XPATH "//WorkStatus" | select -ExpandProperty node | where {$_.status -eq "a" -and $_.action -eq "h"}
しかし、私はすべての3つの値が存在する場合の条件のみTRUEになるように、両者を結合する方法がわかりませんおよび/または存在する。
私はこのスクリプトを-and
と組み合わせてみましたが、役に立たなかった。
$Match = (gc "c:\file.xml | Select-Xml -XPath "//User" | select -ExpandProperty node | where {$_.password}) -and
(gc "c:\file.xml | Select-Xml -XPath "//WorkStatus" | select -ExpandProperty node | where {$_.status -eq "a" -and $_.action -eq "h"})
'$'は 'password'属性を含む' User'ノードを含んでいればtrueになります。ドキュメントに 'status =" a "と' action = "h" '属性を持つ' WorkStatus'ノードが含まれている場合、 '$ Match2'はtrueになります。少なくとも1つのそのような 'User'ノードと少なくとも1つの' WorkStatus'ノードを含む文書にフラグを立てようとしていますか? – djs
XMLサンプルの階層を明確にしてください。 ''は ''の子ノードですか? ''の子ノードですか? ''と同じ階層レベルですか? –
両方の条件が一致する必要があります。つまり、特定の値を満たすUser値とWorkStatus値です。 UserとWorkStatusの組み合わせは数多くありますので、興味のないものは除外しています。 – JDGEEK