質問

次のサンプルXML構造があります:

<SavingAccounts>
    <SavingAccount>
       <ServiceOnline>yes</ServiceOnline>
       <ServiceViaPhone>no</ServiceViaPhone>
    </SavingAccount>
    <SavingAccount>
       <ServiceOnline>no</ServiceOnline>
       <ServiceViaPhone>yes</ServiceViaPhone>
    </SavingAccount>
</SavingAccounts>

「ServiceOnline」の値が「yes」または「ServiceViaPhone」の値がyesであるXPATHを使用して、「SavingAccount」ノードをフィルタリングする必要があります。

XPATHは2行を返すはずです!!次のXPATHサンプルのように、両方の要素値がyesである「SavingAccount」ノードをフィルタリングできますが、私がしたいのは要素値の比較ですか?

/SavingAccounts/SavingAccount/ServiceOnline[text()='yes']/../ServiceViaPhone[text()='yes']/..
役に立ちましたか?

解決

これは非常に基本的なXPath機能です。論理演算子 and or 、および関数 not()

= != よりも優先度が高く、両方の演算子は relational および 平等 演算子(>>=&lt;&lt;=A = B and C = DおよびAND)。

したがって、安全に記述できますOR

よくある間違い

  1. 人々は|および/または<=>を書きます。 XPathでは大文字と小文字が区別されることに注意してください

  2. 人々は<=>

  3. の代わりに<=>(結合)演算子を使用します

最後に、ここに私の解決策があります

/SavingAccounts/SavingAccount
           [ServiceOnLine='yes' or ServiceViaPhone='yes']

他のヒント

/SavingAccounts/SavingAccount[(ServiceOnLine='yes') or (ServiceViaPhone='yes')]

ウィル

/SavingAccounts/SavingAccount[ServiceOnline/text()='yes' or ServiceViaPhone/text()='yes']

トリックをしますか?

現時点で便利なXPath評価者はいません。

編集:
正しく覚えていれば、text()は不要なので、

[ServiceOnline='yes' or ServiceViaPhone='yes']

十分で読みやすくする必要があります。

編集:
はい、もちろん、述語表現の「または」、私の悪い点。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top