2011-01-12 58 views
2

這個(或它的一些變化)是輸出由我的PHP腳本注意,一些標籤在不同的情況下使用相同的名稱:如何使用jQuery解析XML,因爲我在這裏

<conversations> 
    <status>1</status> 
    <conversation> 
    <open>0</open> 
    <status>1</status> 
    <priority>1</priority> 
    </conversation> 
    <conversation> 
    <open>1</open> 
    <status>0</status> 
    <priority>0</priority> 
    </conversation> 
</conversations> 

<messages> 
    <status>1</status> 
    <message> 
    <msgID>165</msgID> 
    <userID>16></userID> 
    <msg>How do I parse this?</msg> 
    </message> 
</messages> 

首先,我需要循環顯示每個對話的按鈕。然後,我需要循環顯示所選對話的所有新消息。我可以自己理解邏輯。我只是不知道如何解析(爬過去)XML。謝謝你的幫助!編輯:如果我說$(「status」,xml).text()我怎麼知道哪個< status>標記被引用?我需要區分<對話>和<消息>。

回答

5
  • .filter()通過節點在頂層過濾,
  • .children()具有可選的選擇來獲得一套那些在頂級
  • .find()的直接孩子有選擇獲得一組節點在那些在當前頂層之下的任何水平
  • .each()遍歷那些在當前頂層

例子:http://jsfiddle.net/MTPdw/1/

var $xml = $(xml); 

var conversations = $xml.filter('conversations'); 

conversations.children('conversation').each(function() { 
    alert($(this).find('status').text()); 
}); 

當你這樣做的:

$("status",xml).text() 

...它被轉換成這樣:

$(xml).find("status").text(); 

由於在頂級節點它是<conversations><messages>,它是全部搜索<status>這些元素都是這些元素的後代。 .text()然後返回其累積文本內容。

+0

謝謝!是否應該在'xml'前面有$符號?我認爲PHP使用$來定義變量,而jQuery沒有。 – 2011-01-12 02:05:32