jQuery解析XML查找特定元素

时间:2015-01-01 13:07:06

标签: jquery ajax xml

我制作的电视指南"从xml文件中获取数据。这就是我到目前为止所拥有的:

$(document).ready(function(){
$.ajax({
    type: "GET",
    url: "programmes.xml",
    dataType: "xml",
    error: function (xhr, status, error) {
        console.log(status, error);
    },
    success: function(xml) {

        var programmeOne = $(xml).find('programme').first();
        $(xml).find('[programme[id="ch1pg1"]').text();
        $('.p1').text(programmeOne.find('title').text());

    }

});

这就是XML:

<channel id="bbc1" source="Sky" date="20/12/2014">
<programme id="ch1pg1">
  <desc>The latest news, sport, business and weather from the BBC's Breakfast team.</desc>
  <title>Breakfast</title>
  <start>0900</start>
  <end>1100</end>
</programme>
<programme id="ch1pg2">
  <desc>James Martin presents the weekly cooking show. [HD] [S]</desc>
  <title> Kitchen</title>
  <start>1100</start>
  <end>1200</end>
</programme>
<programme id="ch1pg3">
  <desc>descriptions [HD] [S]</desc>
  <title>second  Kitchen</title>
  <start>1200</start>
  <end>1300</end>
</programme>

当我删除

$(xml).find('[programme[id="ch1pg1"]').text();

代码有效,但每个频道的所有节目1都使用ch1pg1中的相同标题。

如何使该功能仅使用&#34;标题&#34;来自父元素的元素&#34; program&#34; id为&#34; ch1pg1&#34;?

1 个答案:

答案 0 :(得分:1)

首先,当您按id进行搜索时,您可以使用#选择器来更快更短。

您的第二行代码不起作用,因为您返回一个字符串,然后尝试在其上使用jQuery方法,这将无法正常工作。而是返回jQuery对象并使用它。试试这个:

success: function(xml) {
    var $programmeOne = $(xml).find('#ch1pg1');
    $('.p1').text($programmeOne.find('title').text());
}

Example fiddle