J'essaie d'accéder à l'élément methodName d'un document XML en utilisant XPATH dans Cocoa via l'objet NSXMLElement.XPath et Jabber-RPC
C'est la représentation XML de element
<iq type='set'
from='[email protected]/jrpc-client'
to='[email protected]/jrpc-server'
id='rpc1'>
<query xmlns='jabber:iq:rpc'>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>6</i4></value>
</param>
</params>
</methodCall>
</query>
</iq>
J'ai essayé,
NSArray *nodes = [element nodesForXPath:@"iq/query/methodCall/methodName"
error:&err];
mais il retourne toujours un NSArray vide.
Cela fonctionne très bien sans l'espace de noms.
Solution
/*[name()='iq']/*[name()='query' and namespace-uri()='jabber:iq:rpc']/*[name()='methodCall']/*[name()='methodName']
Bonne question, +1. Voir ma réponse pour une explication détaillée et deux solutions alternatives. –