Получение значения из NSXMLElement

Я пытаюсь получить "номер" из приведенного ниже кода.

<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>

Я пробовал следующее, но он всегда обновляется как "0", но я вижу, что iq имеет номер, отличный от 0

            NSXMLElement *query = [iq childElement];
            NSXMLElement *number = [query elementForName:@“number"];
            NSInteger number = [number attributeIntegerValueForName:@"number
"];

1 ответ

Решение

Пытаться:

NSXMLElement *number = [query elementForName:@"number" xmlns:@"urn:XYZ:number"];

Пространства имен имеют значение. При этом используется категория NSXMLElement, добавленная XMPPFramework. Подробнее здесь.

Ваш XML также может быть упрощен как таковой:

<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>

Пространство имен на query Элемент применяется ко всем дочерним элементам.

Другие вопросы по тегам