2009-10-09 7 views
1

Tenir compte de cette xml:Comment récupérer un élément XML où un attribut est X ou Y?

<parent> 
    <child name="alpha" /> 
</parent> 

et aussi ce xml

<parent> 
    <child name="beta" /> 
</parent> 

Il devrait y avoir qu'un nœud sinlge à /parent/enfant soit alpha ou beeta comme sa valeur de nom.

Pour clarrify ... il n'y aura jamais 2 nœuds enfants un chacun portant le nom alpha et bêta

Je suis en train de créer une seule requête XPath qui renverra la valeur de nom dans chacun de ces 2 cas.

J'ai essayé ...

/parent/child[@name='alpha' | @name='beta']/@name 

... mais ça ne fonctionne pas.

Comment est-ce que je devrais retourner cette valeur?

Mise à jour: J'ai demandé les échantillons pour m'assurer qu'ils étaient bien formés car une réponse indiquait qu'ils ne l'étaient pas.

Répondre

7

Essayez avec:

/parent/child[(@name='alpha') or (@name='beta')]/@name 

Il devrait également fonctionner sans les parenthèses.

+0

Merci beaucoup ... Je suis informé que cela fonctionne parfaitement. :) –

1

Le XML ne semble pas être bien formé, il devrait être:

<parent> 
    <child name="alpha"/> 
</parent> 

<parent> 
    <child name="beta"/> 
</parent> 

Si le XML est mal formé, je ne serais pas attendre grand-chose d'autre à travailler ..

+0

Absolument correct. J'ai réajusté l'échantillon original pour qu'il soit bien formé. Les données réelles étaient bien formées mais le problème restait toujours. Cependant, la question est maintenant répondu par rslite. De toute façon parce que cela pourrait bien aider quelqu'un d'autre. –

Questions connexes