将数组中的值插入xml中的特定节点

时间:2016-03-21 11:55:04

标签: javascript jquery ajax 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 个答案:

答案 0 :(得分:2)

您可以尝试使用此代替上一个循环: (它将用(<header>)的值替换父(<en>)的内容

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

答案 1 :(得分: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));
                }
            });
        });