I'm trying to retrieve "number" from the below mentioned code.
<iq from='[email protected]'
id=‘XYZ'
to='[email protected]/pda'
type='result'>
<query xmlns='urn:XYZ:number'>
<number xmlns=‘urn:XYZ:number'>4</number>
</query>
</iq>
I tried the following but it always updates as "0" but i can see iq has different number than 0
NSXMLElement *query = [iq childElement];
NSXMLElement *number = [query elementForName:@“number"];
NSInteger number = [number attributeIntegerValueForName:@"number
"];
Try:
NSXMLElement *number = [query elementForName:@"number" xmlns:@"urn:XYZ:number"];
Namespaces matter. This uses the NSXMLElement category added by XMPPFramework. More details here.
Your XML could also be simplified as such:
<iq from='[email protected]'
id=‘XYZ'
to='[email protected]/pda'
type='result'>
<query xmlns='urn:XYZ:number'>
<number>4</number>
</query>
</iq>
The namespace on the query
element applies to all child elements.