2016-03-21 20 views
2

xml dosyasını okumaya çalışıyorum ve daha sonra bu verileri diziye kaydedin. Sonra diziden geçmeli ve elemanları belirli düğümlere yapıştırmalıyım. Örneğin bu benim xml dosyasıdır:xml dosyasında diziden belirli düğümlere değerler ekleme

<?xml version="1.0" encoding="UTF-8" ?> 
<contact> 
    <name> 
    <header> 
     <de>Hallo</de> 
     <en>Hello</en> 
    </header> 
    </name> 
    <name> 
    <header> 
     <de>Welt</de> 
     <en>World</en> 
    </header> 
    </name> 
</contact> 

ve bu almak istediğini:

<?xml version="1.0" encoding="UTF-8" ?> 
<contact> 
    <name> 
    <header> 
     Hello 
    </header> 
    </name> 
    <name> 
    <header> 
     World 
    </header> 
    </name> 
</contact> 

Ben başlık düğüm dizisi değerlerine eklemek için gerektiğinde ben sorun var.

$.ajax({ 
    type: "GET", 
    url: '1.xml', 
    dataType: "xml", 
    success: function(xml) { 
    var values = []; 
    $(xml).find('header').each(function() { 
     var text = $(this).find(lang).text(); 
     values.push(text); 
    }); 

    $(xml).find('header').each(function() { 
     $(xml).find('de').remove(); 
     $(xml).find('en').remove(); 
    }); 

    // this part where I have problem 
    $(xml).find('header').each(function() { 
     $.each(values, function(i, val) { 
     $(xml).find('header').append(val); 
     }); 
    }); 
    }) 
}); 

cevap

2

Sen son döngüde yerine bu deneyebilirsiniz: (o (<en>)

$(xml).find('header en').each(function() { 
    $(this).parent().html($(this).html()); 
}); 
+0

ama zor kodlama ?! 'lang' değişkenime bağlı olarak bazen içeriği 'yerine değiştirmeniz gerekiyor' – Christian

+0

' tr' işlevini lang parametreniz ile değiştirebilirsiniz 'find ('header' + lang)' –

+0

Teşekkür ederiz! mükemmel çalışır – Christian

1

değeri ile üst (<header>) içeriğini değiştirir Bu deneyin:

 $(document).ready(function(){ 
      var lang="de"; 
      $.ajax({ 
       type: "GET", 
       url: '1.xml', 
       dataType: "xml", 
       success: function (xml) { 
        var values = []; 
        $(xml).find('header').each(function() { 
         var text = $(this).find(lang).text(); 
         values.push(text); 
        }); 

        $(xml).find('header').each(function() { 
         $(xml).find('de').remove(); 
         $(xml).find('en').remove(); 
        }); 

        // Replace the following changes 
        $(xml).find('header').each(function (i) { 
         var nodGen='<'+lang+'>' + values[i] + '</'+lang+'>'; 
         $(this).append(nodGen); 
        }); 

        // Show new XML 
        alert((new XMLSerializer()).serializeToString(xml)); 
       } 
      }); 
     }); 
İlgili konular