2016-11-19 2 views
1

Ich habe die folgende XMLJQUERY Manipulieren von XML-Daten

<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 verwenden, ich möchte nur für die Elemente mit Fehlern suchen und die entsprechenden Artikelnummer erhalten.

ich den Artikel mit Fehlern finden kann, aber wie kann ich die entsprechende Artikelnummer bekommen, so dass ich kann sagen, dass die SKU einen Fehler hat:

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

so etwas wie dieser wird

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' 
       }); 
      } 
     }); 

Ausgang sei wie:

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

Danke.

Antwort

1

Sie können jQuery.parseXML() verwenden, um alle XML zu analysieren.

Weitere lesen 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>