2012-02-06 91 views
1

在jQuery中處理XML相對較新。我試圖從基於其父元素中的屬性的XML文件中檢索特定的節點。下面是XML(短版):檢索特定的XML節點,jQuery

 <?xml version="1.0" encoding="UTF-8"?> 
     <members> 
      <member row="1"> 
       <firstName>John</firstName> 
       <lastName>Smith</lastName> 
       <status>Active</status> 
       <title>Member</title> 
       <memberSince>August, 2011</memberSince> 
      </member> 
      <member row="2"> 
       <firstName>Jane</firstName> 
       <lastName>Smith</lastName> 
       <status>Active</status> 
       <title>Member</title> 
       <memberSince>October, 2011</memberSince> 
      </member> 
    </members> 

我明白瞭如何使用jQuery中$.get()檢索XML的基礎知識,但似乎無法弄清楚如何檢索只,比如說,member row="2"細節。

任何幫助將不勝感激。

更新

這裏是我使用這個簡單的測試了jQuery,警報收益爲undefined

$(document).ready(function() { 
    $.get(
     'member_xml.php', function($xml) { 
      $xml = $($xml); 
      row = 2; 
      var test = $xml.find('member[row="' + row + '"]').attr('firstName'); 
      alert(test); 
     }, 
     'xml' 
    ); 
}); 

回答

2

假設$xml是你的XML包裝在一個jQuery對象:

$xml.find('member[row="2"]') 

將選擇你想要操縱的行。

$xml.find('member[row="2"] firstName').text(); //returns Jane 

Here是這個工作的一個例子。 XML選擇器的工作原理與從DOM中選擇元素類似;大部分你知道的可以在這裏應用。

+0

看起來這是在正確的軌道上,但我似乎無法獲得使用上面的代碼文本的XML。當我嘗試在alert消息中使用它時,它返回'undefined' - var test = $ xml.find('member [row =「2」]。attr('firstName');' – NightMICU 2012-02-06 23:28:11

+0

這個解決方案對我很好用,感謝您的幫助:) – NightMICU 2012-02-07 02:35:39

2

解析使用$.parseXML

var xml = '<members>\ 
      <member row="1">\ 
       <firstName>John</firstName>\ 
       <lastName>Smith</lastName>\ 
       <status>Active</status>\ 
       <title>Member</title>\ 
       <memberSince>August, 2011</memberSince>\ 
      </member>\ 
      <member row="2">\ 
       <firstName>Jane</firstName>\ 
       <lastName>Smith</lastName>\ 
       <status>Active</status>\ 
       <title>Member</title>\ 
       <memberSince>October, 2011</memberSince>\ 
      </member>\ 
    </members>'; 


    xmlDoc = $.parseXML(xml); 
    $xml = $(xmlDoc); 
    $member = $xml.find('member[row="2"]').find('firstName').text(); 
console.log($member); 

DEMO

+1

好的,這個效果很好,但是當我嘗試引用外部文件(member_xml.php)時,它說無效的XML?我錯過了什麼? – NightMICU 2012-02-07 00:38:05