使用find()和first()以及用XML文档替换With()

时间:2015-08-18 16:21:16

标签: jquery xml

我正在阅读XML文档,并希望找到特定名称的第一个标记,并用不同的标记和内容替换该实例。我正在使用find和first,但是replaceWith调用并没有取代它。

$(storyXML).find('oldTag').first().replaceWith('<newTag>text</newTag>') ;
  });

find找到多个oldTags,第一个返回第一个,replaceWith什么都不做。在搜索Stack Overflow后,我甚至尝试使用以下方法替换所有这些:

$(storyXML).find('oldTag').each(function() {
    $(this).replaceWith('<newTag>text</newTag>') ;
  });

但这也没有做任何事情。感谢您提供的任何帮助!

编辑:在这里分配了storyXML(试图简化发布的代码,希望它仍然有意义):

var load = function () {
    var fn;

    fn = function (obj, init) {
        storyXML = obj.responseXML;
    };

    ajax("GET", this.url, null, fn);
};

编辑2:修正了以下Jason的答案代码。张贴其他任何有此问题的人,找不到像我这样的解决方法。

  var xmlDoc = $.parseXML( storyXML );
  var $xml = $( xmlDoc );
  $xml.find('oldTag').first().replaceWith('<newTag>stuff</newTag>');

  // if you want to keep the old XML string updated, need to do this step
  storyXML = (new XMLSerializer()).serializeToString(xmlDoc);

1 个答案:

答案 0 :(得分:3)

你试过https://api.jquery.com/jQuery.parseXML/吗?有时jQuery会对字符串或DOM对象进行操作,但有时候jQuery会对对象进行操作。