如何查找命名空间XML避免jQuery中的其他名称

问题描述:

我在解析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”

我能解决这个问题。谢谢大家。

您使用*=表示“包含”,“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命名空间的支持。