Question

J'ai l'exemple de structure XML suivant:

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

Ce que je dois faire est de filtrer les nœuds 'SavingAccount' à l'aide de XPATH, où la valeur de 'ServiceOnline' est 'yes' ou la valeur de 'ServiceViaPhone' est yes.

Le XPATH devrait me retourner deux lignes !! Je peux filtrer les nœuds 'SavingAccount' où les deux valeurs d'élément sont oui, comme dans l'exemple XPATH suivant, mais ce que je veux faire est une comparaison de valeur d'élément ou ???

/SavingAccounts/SavingAccount/ServiceOnline[text()='yes']/../ServiceViaPhone[text()='yes']/..
Était-ce utile?

La solution

Il s'agit d'une fonctionnalité XPath très fondamentale: composer un certain nombre de conditions avec les opérateurs logiques et , ou et la fonction pas () .

et ont une priorité supérieure à ou et les deux opérateurs ont une priorité inférieure à celle de relationnel et égalité ( = , ! = , > , > = , & amp; lt; et & amp; lt; = ).

Vous pouvez donc écrire en toute sécurité : A = B et C = D

Certaines des erreurs les plus fréquentes sont commises :

  1. Les personnes écrivent AND et / ou OU . N'oubliez pas que XPath est sensible à la casse .

  2. Les gens utilisent l'opérateur | (union) au lieu de ou

Enfin, voici ma solution :

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

Autres conseils

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

Est-ce que

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

faire le tour?

Je n'ai pas d'évaluateur XPath à portée de main pour le moment.

EDIT:
Si je me souviens bien, vous n'avez pas besoin du texte (), donc

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

devrait être suffisant et plus lisible.

EDIT:
Oui, bien sûr, 'ou' pour les expressions de prédicats, mon mauvais.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top