2013-06-14 4 views
0

J'essaie d'obtenir la valeur de "state" lorsque le nœud "name" est égal par exemple à "This is A" basé sur le XML ci-dessous:Obtenir un nœud basé sur une autre valeur de nœud avec des espaces blancs

<xml> 

<event> 
    <name>This is A</name> 
    <state>OK</state> 
</event> 
<event> 
    <name>This is B</name> 
    <state>KO</state> 
</event> 

</xml> 

Faire quelque chose comme //event[name="This is A"]/state.text() ne fonctionne pas ... Comment est-ce que je pourrais le faire?

Répondre

0

La fonction text() doit être séparée de state en utilisant une barre oblique, pas une période:

//event[name="This is A"]/state/text() 
+0

L'utilisation xmllint du terminal linux j'obtiens l'erreur syntaxique près (et en utilisant QXMLEdit ne montre rien à la suite de cette XPath En outre, en supprimant la dernière partie "/ text()" juste pour tester, je reçois "xmlXPathEval: évaluation a échoué" en raison de la "Ceci est A" comme il semble – codiaf

+0

@ user712533: Cela semble fonctionner pour moi (notez la citations autour de l'expression XPath): 'xmllint --xpath '// événement [name =" Ceci est A "]/state/text()' x.xml' –

+0

Oh, oui, c'était tout, merci – codiaf

Questions connexes