Получение значения из 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
Элемент применяется ко всем дочерним элементам.