2014-11-25 60 views
0

我在解析jQuery上的XML時遇到問題。我有這樣如何查找命名空間XML避免jQuery中的其他名稱

<field name="scheduleItems"> 
    <value> 
    <field name="programID">364</field> 
    <field name="programTime">05:00</field> 
    <field name="programTimeEnd">05:30</field> 
    <value> 
</field> 

XML文件,這是我的代碼時使用AJAX來解析

$.ajax({ 
    type: "GET", 
    url: xmlFeed, 
    dataType: "xml", 
    success: function(xml) { 
     $(xml).find("field[name*='scheduleItems']").each(function(i, obj){ 
      $(xml).find("value").each(function(i, obj){ 
       var programTime = $(this).children("field[name*='programTime']").text(); 
       var programTimeEnd = $(this).children("field[name*='programTimeEnd']").text(); 
       }); 
     }); 
    }, 
    error: function() { 
     console.log("has error!"); 
    } 
}); 

當我打印programTime的結果。 programTimeEnd將追加像這樣>>「programTime」: 「05:0005:30」

我能解決這個問題。謝謝大家。

回答

0

您使用*=表示「包含」,「programTimeEnd」包含「programTime」。對於「等於」使用=

var parser = new DOMParser(); 
 
var xml = parser.parseFromString(
 
    '<field name="scheduleItems">'+ 
 
    ' <value>'+ 
 
    ' <field name="programID">364</field>'+ 
 
    ' <field name="programTime">05:00</field>'+ 
 
    ' <field name="programTimeEnd">05:30</field>'+ 
 
    '</value>'+ 
 
    '</field>', 
 
    'application/xml' 
 
); 
 

 
var output = document.getElementById('output'); 
 
$(xml).find('field[name="scheduleItems"]').each(
 
    function(i, obj){ 
 
    $(this).find("value").each(
 
     function(i, obj){ 
 
     var programTime = $(this).children('field[name="programTime"]').text(); 
 
     var programTimeEnd = $(this).children('field[name="programTimeEnd"]').text(); 
 
     output.appendChild(
 
      document.createTextNode(
 
      programTime + ' - ' + programTimeEnd 
 
     ) 
 
     ); 
 
     output.appendChild(document.createElement('br')); 
 
     } 
 
    ); 
 
    } 
 
);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<pre id="output"></pre>

注:您的XML沒有命名空間,這是一件好事,因爲jQuery有XML命名空間的支持。