2016-03-21 14 views
2

xmlファイルを読み込んで、その中からいくつかのデータを配列に保存しようとしています。次に、配列を通って要素を特定のノードにペーストする必要があります。例えば、これは私のxmlファイルです:配列からxmlの特定のノードに値を挿入する

<?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> 

と、この私が取得したいもの:

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

私はヘッダーノードの配列の値に挿入する必要があるとき、私は問題を抱えています。

$.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); 
     }); 
    }); 
    }) 
}); 

答えて

2

あなたはあなたの最後のループの代わりにこれを試すことができます: (それは<en>(の値によって親(<header>)の内容を置き換えます)

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

しかし、それは私の 'lang'変数に依存しますが、時々私は' ' – Christian

+0

langパラメータ' find( 'header' + lang)で 'en'を置き換えることができます –

+0

ありがとう!それは完璧に動作します – Christian

1

はこれを試してみてください。

 $(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)); 
       } 
      }); 
     }); 
関連する問題