2012-04-12 6 views
1

Ich habe es geschafft, sendIQ und erhalten Sie die Antwort von openfire Server.Traverse xmpp iq Strophen in Javascript

Jetzt kann ich nicht die Antwort für meine Zwecke durchqueren:

Es gibt eine „finden“ Methode für Knoten wie „Liste“, „Andere1“ zu suchen, aber ich brauche alle Typen von Knoten zu durchqueren in der "Liste" enthalten. IQ-Antwort sieht wie folgt aus:

<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> 

Ich brauche alle Arten von Knoten der "Liste". Ich habe bisher:

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

Aber das gibt mir den Text wie „asdf“ aus den verschiedenen Typen von Knoten wie „Andere1“ und „othern“. Wie kann ich die Arten der Knoten bekommen (d. H. "Set", "other1")? Ich habe auch versucht $(this).val()), aber es funktioniert auch nicht.

Bitte hilfe ....

Vielen Dank!

Antwort

2

Sie können die nodeName jedes Element innerhalb der Schleife erhalten:

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

Sie diese Variablen für jeden Index in dem Array/Objekt in der Schleife wie oben zugreifen kann. Hier

ist eine Demo: http://jsfiddle.net/7AKL6/2/

Dokumentation für .each(): http://api.jquery.com/each/

Dokumentation für Node.nodeName: https://developer.mozilla.org/en/Document_Object_Model_(DOM)/Node.nodeName

Beachten Sie auch, dass Ihr XML-Beispiel hat einen Fehler drin:

<other1> asdf </other> 

sollte sein:

<other1> asdf </other1> 

ordnungsgemäß zu schließen.

+0

vielen Dank für die Antwort und die Vermögenswerte! Ich bin neu in js und html5, könnten Sie mir ein gutes MVC-Framework vorschlagen, um den js und html Code zu strukturieren? Zur Zeit habe ich eine xmpp-Verbindung und kann diese Verbindung über verschiedene js-Dateien verwenden, wenn die js-Dateien die Funktion $ (document) .ready() enthalten. Oder glaubst du, es reicht für eine mobile App? – user1054134