【问题标题】:iOS XMPPFramework: how to parse didReceiveIQ?iOS XMPPFramework:如何解析 didReceiveIQ?
【发布时间】:2014-05-28 22:08:41
【问题描述】:

我查看了以下XMPPFramework - Implement Group Chat (MUC) 并已成功获取公共聊天室列表。该列表是从函数返回的 - (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq,我正在尝试解析信息以创建一个 plist,以便我的 iOS 客户端可以显示所有可用的聊天室加入。

这是返回的 iq:

<iq xmlns="jabber:client" type="result" from="conference.example.com" to="admin@example.com/2abb8426"><query xmlns="http://jabber.org/protocol/disco#items"><item jid="test@conference.example.com" name="Test Room"/></query></iq>

我的问题是我不知道如何正确解析返回的信息,谁能指导我在这个例子中进行 xml 解析?感谢您的宝贵时间。

【问题讨论】:

    标签: ios xmppframework


    【解决方案1】:

    让我们以官方 XEP 页面 (http://xmpp.org/extensions/xep-0045.html) 的响应为例:

    <iq from='chat.shakespeare.lit'
        id='zb8q41f4'
        to='hag66@shakespeare.lit/pda'
        type='result'>
      <query xmlns='http://jabber.org/protocol/disco#items'>
        <item jid='heath@chat.shakespeare.lit'
              name='A Lonely Heath'/>
        <item jid='coven@chat.shakespeare.lit'
              name='A Dark Cave'/>
        <item jid='forres@chat.shakespeare.lit'
              name='The Palace'/>
        <item jid='inverness@chat.shakespeare.lit'
              name='Macbeth&apos;s Castle'/>
      </query>
    </iq>
    

    您可以通过以下方式获取query 元素:

    NSXMLElement *queryElement = [iq elementForName:@"query" xmlns:@"http://jabber.org/protocol/disco#items"];
    

    然后你可以遍历项目:

        NSArray *items = [queryElement elementsForName:@"item"];
        for (NSXMLElement *i in items) {
            NSString *roomName = [i attributeStringValueForName:@"name"];
            NSString *jidString = [i attributeStringValueForName:@"jid"];
            XMPPJID *jid = [XMPPJID jidWithString:jidString];
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-05
      • 2017-03-23
      • 2016-02-06
      • 1970-01-01
      • 2016-01-04
      • 2013-12-02
      • 1970-01-01
      • 2016-05-23
      相关资源
      最近更新 更多