1

我设法 sendIQ 并从 openfire 服务器获得响应。

现在我无法出于我的目的遍历响应:

有一种“find”方法可以搜索“list”、“other1”等节点,但我需要遍历“list”中包含的所有节点类型。IQ 响应如下所示:

 <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())但它也不起作用。

请帮忙....

谢谢!

4

1 回答 1

2

您可以nodeName在循环中获取每个元素的:

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

对于数组/对象中的每个索引,您可以像上面一样在循环内访问这些变量。

这是一个演示:http: //jsfiddle.net/7AKL6/2/

文档.each()http ://api.jquery.com/each/

文档Node.nodeNamehttps ://developer.mozilla.org/en/Document_Object_Model_(DOM)/Node.nodeName

另请注意,您的 XML 示例中有一个错误:

<other1> asdf </other>

应该:

<other1> asdf </other1>

正确关闭自己。

于 2012-04-12T21:23:33.807 回答