سؤال

I'm trying to retrieve "number" from the below mentioned code.

<iq from='coven@chat.shakespeare.lit'
    id=‘XYZ'
    to='hag66@shakespeare.lit/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='coven@chat.shakespeare.lit'
    id=‘XYZ'
    to='hag66@shakespeare.lit/pda'
    type='result'>
  <query xmlns='urn:XYZ:number'>
    <number>4</number>
  </query>
</iq>

The namespace on the query element applies to all child elements.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top