2014-01-20 81 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」 ];給我 4 ...我需要知道如何從這個元素中取出數字「4」並將其保存在NSInteger中 – DevCali

回答

2

嘗試:

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

命名空間的問題。這使用由XMPPFramework添加的NSXMLElement類別。更多詳情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