检索特定的XML节点,jQuery

问题描述:

在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' 
    ); 
}); 

假设$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

解析使用$.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