2014-01-20 2 views
1

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

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

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

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

Я не хочу делать какие-либо предположения, но с кодом, который вы предоставили, похоже, что вы пытаетесь напрямую обращаться к узлам XML из строки XML. Этот XML уже разбирался? –

+0

да, и у меня есть значения в запросе и номере. – DevCali

+0

Мне просто нужно знать, как получить этот номер «4» в приведенном выше коде ... приведенный выше код NSXMLElement * number = [query elementForName: @ "number" ]; дает мне <число xmlns = 'urn: XYZ: number'> 4 ... Мне нужно знать, как вынуть число «4» из этого элемента и сохранить его в NSInteger – DevCali

ответ

2

Try:

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

Namespaces вопрос. Это использует категорию NSXMLElement, добавленную XMPPFramework. Подробнее here.

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

<iq from='[email protected]' 
    id=‘XYZ' 
    to='[email protected]/pda' 
    type='result'> 
    <query xmlns='urn:XYZ:number'> 
    <number>4</number> 
    </query> 
</iq> 

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

+0

Спасибо, это работает! – DevCali

Смежные вопросы