1

我正在尝试从下面提到的代码中检索“数字”。

<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
"];
4

1 回答 1

2

尝试:

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

命名空间很重要。这使用了 XMPPFramework 添加的 NSXMLElement 类别。更多细节在这里

您的 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适用于所有子元素。

于 2014-01-21T18:30:37.777 回答