我设法sendIQ并从openfire服务器获得响应。
现在,出于我的目的,我无法遍历响应:
有一种“查找”方法来搜索诸如“列表”,“ other1”之类的节点,但是我需要遍历“列表”中包含的所有节点类型。智商响应如下所示:
<iq type="get" id="sid_225">
<list xmlns="urn:xmpp:archive" end="2012-04-30T22:00:00Z" start="2012-03-31T22:00:00Z">
<set xmlns="http://jabber.org/protocol/rsm">
<max>30</max>
</set>
<other1> asdf </other1>
<othern> aasdf </othern>
</list>
</iq>
我需要“列表”的所有节点类型。我到目前为止:
$(iq).find("list").children().each(function () {
alert($(this).text());
}
但这给了我来自“ other1”和“ othern”等不同类型节点的文本“ asdf”。如何获取节点的类型(即“ set”,“ other1”)?我也尝试了
$(this).val()
),但也没有用。请帮忙....
谢谢!
最佳答案
您可以在循环中获取每个元素的nodeName
:
$(iq).find("list").children().each(function () {
alert(this.nodeName + ' = ' + $(this).text());
});
您可以像上面为数组/对象中的每个索引一样在循环内访问这些变量。
这是一个演示:http://jsfiddle.net/7AKL6/2/
.each()
的文档:http://api.jquery.com/each/Node.nodeName
的文档:https://developer.mozilla.org/en/Document_Object_Model_(DOM)/Node.nodeName还要注意,您的XML示例中有一个错误:
<other1> asdf </other>
应该:
<other1> asdf </other1>
正确关闭自己。