2015-01-01 172 views
0

我正在製作一個「電視指南」,它從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」的父元素「程序」中的「標題」元素?

回答

1

首先,當通過id進行搜索時,您可以使用#選擇器來使事情變得更快更短。

您的第二行代碼不起作用,因爲您正在返回一個字符串,然後試圖對其使用jQuery方法,這將無法正常工作。而是返回jQuery對象並使用它。試試這個:

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

Example fiddle