2016-11-19 25 views
1

我有下面的XMLJQUERY操作XML数据

<response> 
    <item> 
     <sku>83340</sku> 
     <vendor>83340</vendor> 
     <errors> 
      <msg>Real-Time Error</msg> 
     </errors> 
    </item> 
    <item> 
     <sku>83340</sku> 
    </item> 
    <item> 
     <sku>05319GS11007</sku> 
     <vendor>83340</vendor> 
     <errors> 
      <msg>Fatal Error</msg> 
     </errors> 
    </item> 
</response> 

使用jQuery,我想只搜索的项目有错误的,并得到相应的SKU。

我能找到有错误的项目,但我怎样才能得到相应的SKU,这样我可以说,SKU有错误:

var errors = ''; 
jQuery(res).find("errors").each(function (i) { 
      jQuery(this).find("msg").each(function() { 
       errors += ' - ' + jQuery(this).text(); + '\n' 
      }); 
     }); 

像这样

jQuery(res).find("item").each(function (i) { 
      if(jQuery(this).has("error")){ 
       var stSKU = jQuery(this).find("sku").text(); 
       var stError = jQuery(this).find("msg").text();.each(function() { 
        errors += ' # SKU # 'stSKU ' - ' + stError + '\n' 
       }); 
      } 
     }); 

输出如:

SKU # 83340 has Real Time Error. 
SKU # 05319GS11007 has Fatal Error. 

谢谢。

回答

1

您可以使用jQuery.parseXML()解析任何XML

更多阅读here

var xml = `<response> 
 
    <item> 
 
     <sku>83340</sku> 
 
     <vendor>83340</vendor> 
 
     <errors> 
 
      <msg>Real-Time Error</msg> 
 
     </errors> 
 
    </item> 
 
    <item> 
 
     <sku>83340</sku> 
 
    </item> 
 
    <item> 
 
     <sku>05319GS11007</sku> 
 
     <vendor>83340</vendor> 
 
     <errors> 
 
      <msg>Fatal Error</msg> 
 
     </errors> 
 
    </item> 
 
</response>`; 
 

 
var xmlObj = $.parseXML(xml); 
 
var err; 
 
$(xmlObj).find("item").each(function(item){ 
 
    err = $(this).find("errors"); 
 
    if(err.length){ 
 
    console.log("SKU #" + $(this).find("sku").text() + " has " + $(err).find("msg").text()); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>