小编典典

jQuery将XML标签转换为大写

ajax

我有一个AJAX请求,该请求返回我想注入DOM的XML字符串。我的功能看起来像

  $.ajax({
    type: 'POST',
    url: "myrequest",
    data: postdata,
    datatype: 'json',
    success: function (arguments) {
        newxmlstring = arguments.newxml;
        oldnode = $("someselector specified in the arguments passed");
        oldnode.replaceWith(newxmlstring);
    }
  });

此方法有效,但似乎replaceWith函数将所有内容映射nodeName到服务器发送的响应的大写版本中。我假设尝试使用jQuery处理XML有点古怪吗?

因此,例如,如果响应字符串是<data>asdf</data>在我访问时$(newnode)[0].nodeName得到的'DATA'

有人知道如何在保留nodeName小写字母的同时处理新的XML 吗?

编辑:我的答复是JSON,因为它包含新的xml字符串和有关将新的xml节点附加到何处的其他数据。因此,我希望尽可能保留datatype: 'json'


阅读 397

收藏
2020-07-26

共1个答案

小编典典

在XML(以及基于XML的语言,例如XHTML)中,tagName保留大小写。在HTML中,tagName以规范的大写形式返回元素名称。tagName的值与nodeName的值相同。

一点搜索表明,很多人都遇到了这个问题,尤其是选择器和XML(jQuery的find()区分大小写,在find()中使用的选择器是小写的)。

这是其他人用来将字符串转换为可能适合您的XML
的函数

$.text2xml = function(sXML) { 
    // NOTE: I'd like to use jQuery for this, but jQuery makes all 
    // tags uppercase 
    //return $(xml)[0]; 
    var out; 
    try{ 
        var dXML = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser(); 
        dXML.async = false; 
    }catch(e){ throw new Error("XML Parser could not be instantiated"); }; 
    try{ 
        if($.browser.msie) out = (dXML.loadXML(sXML))?dXML:false; 
        else out = dXML.parseFromString(sXML, "text/xml"); 
    } 
    catch(e){ throw new Error("Error parsing XML string"); }; 
    return out;
}
2020-07-26