Frage

Ich habe die folgende XML-Beispielstruktur:

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

Was muss ich tun, ist die ‚SavingAccount‘ Knoten filtern XPath, wo der Wert von ‚Serviceonline‘ ist ‚Ja‘ oder der Wert von ‚ServiceViaPhone‘ ist ja.

Die XPATH zurückkehren sollte mir zwei Reihen !! Ich kann ‚SavingAccount‘ Knoten filtern, wo beide der Elementwerte ja wie die folgende XPath-Probe sind, aber was ich tun möchte, ist ein oder Elementwert Vergleich ???

/SavingAccounts/SavingAccount/ServiceOnline[text()='yes']/../ServiceViaPhone[text()='yes']/..
War es hilfreich?

Lösung

Dies ist eine sehr grundlegende XPath-Funktion: eine Reihe von Bedingungen mit den logischen Operatoren Komponieren or und die Funktion not() .

and hat eine höhere Priorität als or und beiden Betreiber haben eine niedrigere Priorität als die relationale und Gleichheit Operatoren (=, !=, >, >=, &lt; und &lt;=).

So, es ist sicher zu schreiben : A = B and C = D

Einige häufigsten Fehler gemacht :

  1. Die Leute schreiben AND und / oder OR. Denken Sie daran, XPath ist case-sensitive .

  2. Die Menschen nutzen die | (Vereinigung) Operator statt or

Schließlich, hier ist meine Lösung :

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

Andere Tipps

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

Will

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

den Trick tun?

Ich habe keine XPath zur Zeit praktisch Evaluator.

EDIT:
Wenn ich mich richtig erinnere, müssen Sie den Text nicht benötigen (), so

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

sollte ausreichend und besser lesbar sein.

EDIT:
Ja, natürlich ‚oder‘ für Prädikat Ausdrücke, mein schlecht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top