在 javascript 中遍历 XMPP iq 节

Posted

技术标签:

【中文标题】在 javascript 中遍历 XMPP iq 节【英文标题】:traverse XMPP iq stanza in javascript 【发布时间】:2015-02-05 13:32:18 【问题描述】:

我设法从韵律 XMPP 服务器获得响应。结果,我得到了我的名册查询的 iq 节。

<iq xmlns="jabber:client" id="1:sendIQ" type="result" to="server@localhost/c38649b9-b47f-46b9-bcbc-7f0f683408f1">
  <query xmlns="jabber:iq:roster" ver="41">
    <item jid="sam@internal" subscription="none"/>
    <item jid="test@example.com" subscription="none"/>
    <item jid="blade@internal" subscription="none"/>
  </query>
</iq>

我想从项目标签中获取 JID 的值。例如,来自项目标签的 sam@internal。

到目前为止,我使用下面的 javascript 代码成功地到达了项目标签。但我想遍历到“jid”。

$(iq).find("query").children().each(function () alert(this.nodeName + ' = ' + $(this).text()); );

这里是 jsfiddle 上的运行代码:http://jsfiddle.net/ritter17/ec272rux/

任何帮助将不胜感激!提前致谢。

【问题讨论】:

你确定 jQuery 代码有效吗?我可以看出它有两个问题。 $(iq) 应该是 $('iq'),并且在该节中找不到“列表”元素。 @Andy 我确信它正在工作,因为我更改了拼写错误(查询而不是列表)。获取这些值。但我想从项目节点获取 JID 的值。项目 = 项目 = 项目 = 【参考方案1】:

这是尝试失败后的答案。

x=iq.getElementsByTagName('item');

        for (i=0;i<x.length;i++)
        
          $("#msgs").prepend("<p><strong>" + "server" + "</strong>: " + x[i].getAttribute('jid') + "</p>");
          console.log(x[i].getAttribute('jid'));
        

【讨论】:

以上是关于在 javascript 中遍历 XMPP iq 节的主要内容,如果未能解决你的问题,请参考以下文章

发送和接收 IQ ASMACK Android XMPP

Python-XMPP - 迭代 IQ 节项目

XMPP节之message,presence,IQ介绍

XMPP IQ 结果解析问题

使用 XMPP 的谷歌谈话服务器没有会话 IQ 响应

在 Android 上使用 aSmack 发送和接收自定义 XMPP IQ