2016-11-19 68 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>