【问题标题】:insert values from array into specific node in xml将数组中的值插入xml中的特定节点
【发布时间】:2016-03-21 11:55:03
【问题描述】:

我正在尝试读取 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);
      });
    });
  })
});

【问题讨论】:

    标签: javascript jquery ajax xml


    【解决方案1】:

    你可以试试这个来代替你的最后一个循环: ( 它将用 (&lt;en&gt;) 的值替换父 (&lt;header&gt;) 的内容

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

    【讨论】:

    • 但这是硬编码?!取决于我的 lang 变量,有时我需要替换 &lt;de&gt; 中的内容
    • 你可以用你的语言参数find('header ' +lang)替换en
    【解决方案2】:

    试试这个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      相关资源
      最近更新 更多