jQuery解析XML查找特定元素

问题描述:

我正在制作一个“电视指南”,它从XML文件获取数据。这是我到目前为止有:jQuery解析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的标题。

如何让函数只使用ID为“ch1pg1”的父元素“程序”中的“标题”元素?

首先,当通过id进行搜索时,您可以使用#选择器来使事情变得更快更短。

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

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

Example fiddle