JQuery按属性值查找元素

时间:2013-02-28 21:13:31

标签: jquery xml

我有一个xml文件,想要检索key属性的内容。

xml文件的结构如下:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<MPL Version="2.0" Title="MCWS - Files - 2100">
  <Item>
    <Field Name="Key">1383</Field>
    <Field Name="Name">En la Planta de Tus Pies</Field>
    <Field Name="Artist">Alejandro Sanz</Field>
    <Field Name="Album">El Tren de los Momentos</Field>
    <Field Name="Genre">Latin</Field>
  </item>
<Item>
    <Field Name="Key">938</Field>
    <Field Name="Name">Something Beautiful</Field>
    <Field Name="Artist">Robbie Williams</Field>
    <Field Name="Album">Escapology</Field>
    <Field Name="Genre">Rock</Field>
  </item>
</MPL>

我的JQuery函数如下所示:

function displaySongs() {
  $.ajax({
    type: "GET",
    url:"Files.xml",
    dataType: "xml",
    success: function(xml){
    var content = "";

    $(xml).find('Item').each(function(){
    var songId = $(this).find('Field[Name="Key"]');
    var songName = $(this).find('Field[Name="Name"]');

    content += "<div class=\"Song\">" + songName.text() + "</div>";
    $("#output").html(content);     
    }); 
  },
  error: function() {
    alert("An error occurred while processing XML file.");
  }
  });
}

我的问题是我没有找到Name =“Name”节点的内容,而是获取整个项目结果。

2 个答案:

答案 0 :(得分:0)

jQuery有一个返回属性值的特殊函数:

$('Field').attr('Name');

这应该返回属性的值。

但是,我从来没有在XML上使用jQuery,所以我不确定如何对待它。不过,你应该试一试。

答案 1 :(得分:0)

你应该这样做:

   var xml = $.parseXML(outputFromAJAXXML),
   $xml = $( xml ),
   $test = $xml.find('Field[Name="Name"]');
   console.log($test.text()); // This works

以上输出,连接名称 - En la Planta de Tus PiesSomething Beautiful作为一个单独的字符串

以下作品完美无缺。在这里查看jsFiddle链接http://jsfiddle.net/k5sVt/15/

  $(outputFromAJAXXML).find('Field[Name="Name"]').each(function()
  {
   console.log('****'+$(this).text());
  });